python-3.x - 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() 作为排序函数的键,但无济于事。
谢谢您的帮助。
解决方案
key-Argument 需要一个转换一个字符串的函数。
def numbers_sort(filename):
with open(filename) as lines:
print(''.join(sorted(lines, key=lambda s: re.sub('[-+]?[0-9]+', '', s))), end="")
推荐阅读
- arrays - Bigquery 数组中的不同计数
- c# - OutOfMemoryException,我怀疑原因是 DbContext,但我不确定?
- openedge - 使用 Progress Openedge ABL (ChUI) 程序确定运行时间的最有效方法是什么?
- vba - 我的“Worksheet_SelectionChange”代码要求我在更新数据透视表之前再次选择每个单元格
- php - 我想使用带有 PDO 的 Consolibyte PHP QuickBooks 库
- ios - 如何以编程方式在父容器中制作两个相同大小的 UIView
- apache-poi - 您可以使用 apache poi 更新或删除 excel 中的旧图表吗?
- python - 根据条件比较列表列表中的所有列表,并根据它们的差异将它们分组在一起
- css - 以毫米为单位的 Css 网格布局(用于打印)
- cordova - 带有 targetSdkVersion 26 的 Cordova 应用程序在 Android 8 上崩溃