首页 > 解决方案 > python - 如何对python中的字符串列表进行排序,忽略这些字符串中的数字?

问题描述

我想在 python 中对字符串列表进行排序,但是排序脚本应该省略这些字符串中包含的数字。可以在下面找到此类列表的示例:

列表 = ['aaa', '1aaa', 'abc', '2abc', '3abc', 'b2bb', 'b3bb']

我在 stackoverflow 上找到了一个主题,即this one,但这并没有回答我的问题。经过更多研究,我找到了这个页面,但我的实现不起作用:

import re 

def numbers_sort(file):
    lines = []
    lines += [line for line in open(file).readlines()]
    print(''.join(sorted(lines,  key=lambda key: [x for x in re.sub('^[-+]?[0-9]+$', '')])),end="")

我也一直在尝试使用 isdigit() 作为排序函数的键,但无济于事。

谢谢您的帮助。

标签: python-3.xstringlistsortingdigits

解决方案


key-Argument 需要一个转换一个字符串的函数。

def numbers_sort(filename):
    with open(filename) as lines:
        print(''.join(sorted(lines,  key=lambda s: re.sub('[-+]?[0-9]+', '', s))), end="")

推荐阅读