Python 按子字符串对字符串进行排序
我需要对这个列表进行排序Python 按子字符串对字符串进行排序,python,list,sorting,Python,List,Sorting,我需要对这个列表进行排序 list = ['16. Michlík', '4. and 65. Bichakhchyan', '15. Pavol'] 根据每个字符串的第一个数字。所以输出应该是这样的 list = ['4. and 65. Bichakhchyan', '15. Pavol', '16. Michlík'] 这是我到目前为止所拥有的,但当字符串中有一个以上的数字时,它就不起作用了 sorted(list, key=lambda x : x[:x.find(".")]) 你
list = ['16. Michlík', '4. and 65. Bichakhchyan', '15. Pavol']
根据每个字符串的第一个数字。所以输出应该是这样的
list = ['4. and 65. Bichakhchyan', '15. Pavol', '16. Michlík']
这是我到目前为止所拥有的,但当字符串中有一个以上的数字时,它就不起作用了
sorted(list, key=lambda x : x[:x.find(".")])
你们能帮帮我吗?你们可以使用正则表达式:
import re
l = ['16. Michlík', '4. and 65. Bichakhchyan', '15. Pavol']
result = sorted(l, key=lambda x:int(re.findall('^\d+', x)[0]))
输出:
['4. and 65. Bichakhchyan', '15. Pavol', '16. Michlík']
您可以使用正则表达式:
import re
l = ['16. Michlík', '4. and 65. Bichakhchyan', '15. Pavol']
result = sorted(l, key=lambda x:int(re.findall('^\d+', x)[0]))
输出:
['4. and 65. Bichakhchyan', '15. Pavol', '16. Michlík']
这是一种方式
lst = ['16. Michlík', '4. and 65. Bichakhchyan', '15. Pavol']
res = sorted(lst, key=lambda x: int(x.split('.')[0]))
# ['4. and 65. Bichakhchyan', '15. Pavol', '16. Michlík']
这是一种方式
lst = ['16. Michlík', '4. and 65. Bichakhchyan', '15. Pavol']
res = sorted(lst, key=lambda x: int(x.split('.')[0]))
# ['4. and 65. Bichakhchyan', '15. Pavol', '16. Michlík']
必须将模式强制转换为整数,否则会将其作为字符串进行比较
sorted(list, key=lambda x : int(x[:x.find(".")]))
必须将模式强制转换为整数,否则会将其作为字符串进行比较
sorted(list, key=lambda x : int(x[:x.find(".")]))
你可以用
re.match(r'\d+',x).group()替换re.findall('^\d+',x)[0]
,获得一些免费性能。你可以用re.findall('^\d+',x)[0]
替换re.match(r'\d+',x).group()
获得一些免费性能。