【Python】怎么把汉字排在数字前面
如 str_1 =‘190370052小明’
怎么转换成str_1 =‘小明190370052’
有大佬给出一个相对简单的方法吗? 本帖最后由 南岸 于 2020-10-28 19:18 编辑
我看看啊
```
str_1 ='190370052小明'
str_2 = ''
str_3 = ''
for i in str_1:
if i.isdigit() == True:
str_2 += i
else:
str_3 += i
str_1 = str_3+str_2
print(str_1)
``` 南岸 发表于 2020-10-28 19:15
我看看啊
{:1_896:}试了下,不行 XinSong 发表于 2020-10-28 19:17
试了下,不行
刚才写错了。。。。 南岸 发表于 2020-10-28 19:15
我看看啊
```
str_1 ='190370052小明'
{:1_896:}你这个写法运行下来之后,数字还是数字,汉字还是在最后面= = XinSong 发表于 2020-10-28 19:18
你这个写法运行下来之后,数字还是数字,汉字还是在最后面= =
你在试试? 刚才写错了 def is_number(s):
try:
float(s)
return True
except ValueError:
pass
try:
import unicodedata
unicodedata.numeric(s)
return True
except (TypeError, ValueError):
pass
return False
str_1 ='190370052小明'
str_2 = ''
str_3 = ''
for i in str_1:
if is_number(i) == True:
str_2 += i
else:
str_3 += i
print(str_3)
print(str_2)
str_1 = str_3+str_2
print(str_1)
这样子就可以了 南岸 发表于 2020-10-28 19:21
刚才写错了
{:1_899:}感觉我写的好复杂啊。哈哈哈哈 调用 re 正则表达式
importre
str_1 = '190370052小明'
num = re.findall('\d+', str_1)
name = re.findall('[\u4e00-\u9fa5]+',str_1)
str_1 = name + num
print(str_1)
页:
[1]
2