x66 发表于 2020-10-28 18:58

【Python】怎么把汉字排在数字前面


如 str_1 =‘190370052小明’
怎么转换成str_1 =‘小明190370052’
有大佬给出一个相对简单的方法吗?

南岸 发表于 2020-10-28 19:15

本帖最后由 南岸 于 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)
```

XinSong 发表于 2020-10-28 19:17

南岸 发表于 2020-10-28 19:15
我看看啊

{:1_896:}试了下,不行

南岸 发表于 2020-10-28 19:18

XinSong 发表于 2020-10-28 19:17
试了下,不行

刚才写错了。。。。

XinSong 发表于 2020-10-28 19:18

南岸 发表于 2020-10-28 19:15
我看看啊
```
str_1 ='190370052小明'


{:1_896:}你这个写法运行下来之后,数字还是数字,汉字还是在最后面= =

南岸 发表于 2020-10-28 19:19

XinSong 发表于 2020-10-28 19:18
你这个写法运行下来之后,数字还是数字,汉字还是在最后面= =

你在试试?

南岸 发表于 2020-10-28 19:21

刚才写错了

XinSong 发表于 2020-10-28 19:21

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)


这样子就可以了

XinSong 发表于 2020-10-28 19:22

南岸 发表于 2020-10-28 19:21
刚才写错了

{:1_899:}感觉我写的好复杂啊。哈哈哈哈

cqfcy 发表于 2020-10-28 19:25

调用 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
查看完整版本: 【Python】怎么把汉字排在数字前面