nettkd 发表于 2022-1-13 16:02:22

如何分离文字和数字

这里有[罗恩120,哈利波特383,赫敏524,马尔福246]
我想实现把他们的分数提取出来用于比较大小,请问怎么将汉字和数字分离呀?谢谢啦

涟漪袅袅 发表于 2022-1-13 16:12:59

看规律分数都是这个列表里元素的后3位,所以可以试一下使用列表的负数索引
list1=['罗恩120','哈利波特383','赫敏524','马尔福246']
list2=[]
list3=[]
for each in list1:
        list2.append(each[:-3])
        list3.append(each[-3:])

涟漪袅袅 发表于 2022-1-13 16:14:21

结果出来应该是这样的
>>> list2
['罗恩', '哈利波特', '赫敏', '马尔福']
>>> list3
['120', '383', '524', '246']

傻眼貓咪 发表于 2022-1-13 16:24:43

如果数字不一定是三个数字,也可以试试用正则表达式:import re
arr = ["罗恩120", "哈利波特383", "赫敏524", "马尔福246"]

res = dict()

for i in arr:
        value = re.findall(r"+$", i)
        key = re.findall(r"^[\u4e00-\u9fa5]+", i)
        res] = int(value)

print(res){'罗恩': 120, '哈利波特': 383, '赫敏': 524, '马尔福': 246}

nettkd 发表于 2022-1-13 21:19:59

傻眼貓咪 发表于 2022-1-13 16:24
如果数字不一定是三个数字,也可以试试用正则表达式:

有更简单点的方法吗?我还没学到这些,看不懂{:5_100:}

傻眼貓咪 发表于 2022-1-13 23:11:42

nettkd 发表于 2022-1-13 21:19
有更简单点的方法吗?我还没学到这些,看不懂

arr = ["罗恩120", "哈利波特383", "赫敏524", "马尔福246"]

res = dict() # 创建新字典

for name in arr:
    key = ""
    value = ""
    for c in name:
      if c.isdigit(): # 数字
            value += c
      else: # 不是数字
            key += c
    res = int(value) # 存入字典

print(res)

nettkd 发表于 2022-1-14 06:48:50

傻眼貓咪 发表于 2022-1-13 23:11


谢谢啦
页: [1]
查看完整版本: 如何分离文字和数字