首页 > 后端开发 > Python教程 > 如何在Python中自然地对包含数字的字符串进行排序?

如何在Python中自然地对包含数字的字符串进行排序?

DDD
发布: 2024-11-30 01:46:10
原创
584 人浏览过

How to Sort Strings Containing Numbers Naturally in Python?

对嵌入数字的字符串进行排序

处理包含数字的字符串时,按字母顺序对它们进行排序可能不会产生所需的结果。要正确对此类字符串进行排序,您需要同时考虑文本和数字部分。

人工排序(自然排序)

自然排序,也称为人工排序,是一种用于以与人类感知方式一致的方式对项目进行排序的技术。这种方法涉及从字符串中提取数字,然后根据其数值对它们进行排序。

在 Python 中,您可以使用以下自定义排序键实现自然排序:

def natural_keys(text):
    return [int(c) if c.isdigit() else c for c in re.split(r'(\d+)', text)]
登录后复制

此函数将字符串拆分为字符和数字,然后将数字字符转换为整数。排序列表是通过使用以下自定义键调用 sort() 函数来获得的:

alist = ["something1", "something12", "something17", "something2", "something25", "something29"]
alist.sort(key=natural_keys)
print(alist)
登录后复制

输出将是:

['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
登录后复制

使用浮点数对字符串进行排序

如果您的字符串包含浮点数,您可以修改自然排序键以使用以下命令提取并转换为浮点数以下正则表达式:

def natural_keys(text):
    return [float(c) if c.isdigit() else c for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text)]
登录后复制

此修改后的键还允许您使用浮点数对字符串进行排序:

alist = ["something1", "something2", "something1.0", "something1.25", "something1.105"]
alist.sort(key=natural_keys)
print(alist)
登录后复制

输出将为:

['something1', 'something1.0', 'something1.105', 'something1.25', 'something2']
登录后复制

通过利用人类排序技术,您可以以符合人类直觉的方式对嵌入数字的字符串进行高效排序。

以上是如何在Python中自然地对包含数字的字符串进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板