有人知道如何将行排序到[“D9”、“D10”、“E9P”、“E10P”]吗? 我想先按前面的字母表排序,然后按里面的数字排序。你知道吗
In [2]: rows
Out[2]: ['D10', 'D9', 'E9P', 'E10P']
In [3]: sorted(rows)
Out[3]: ['D10', 'D9', 'E10P', 'E9P']
1. I can sort 9 ahead of 10 like this.
In [9]: sorted(rows, key=lambda row: int(re.search('(\d+)', row, re.IGNORECASE).group(1)))
Out[9]: ['D9', 'E9P', 'D10', 'E10P']
2. This doesn't work for me
In [10]: sorted(rows, key=lambda row: (row, int(re.search('(\d+)', row, re.IGNORECASE).group(1))))
Out[10]: ['D10', 'D9', 'E10P', 'E9P']
你可以做:
输出
或者如果您想使用regex:
或者也可以使用正则表达式:
最后一个函数的优点是它可以在字符串的开头容纳多个非数字字符。你知道吗
这将采取任何数量的字符在前面,和任何数量的数字之后。你知道吗
扩展已有的内容,可以使用
row[0]
而不是row
作为主排序键相关问题 更多 >
编程相关推荐