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()
获得一些免费性能。