微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python根据内嵌的数字将字符串排序(sort by numbers embedded in strings)

 

import re  
re_digits = re.compile(r'(\d+)')  
def embedded_numbers(s):  
     pieces = re_digits.split(s)               # 切成数字与非数字  
     pieces[1::2] = map(int, pieces[1::2])     # 将数字部分转成整数  
     return pieces  
def sort_strings_with_embedded_numbers(alist):  
     return sorted(alist, key=embedded_numbers)
files = '12 2 56 345 12'.split( )
new_list=sort_strings_with_embedded_numbers(files)
str=' '.join(new_list)
print(str)

 

 

import re  
re_digits = re.compile(r'(\d+)')  
def embedded_numbers(s):  
     pieces = re_digits.split(s)               # 切成数字与非数字  
     pieces[1::2] = map(int, pieces[1::2])     # 将数字部分转成整数  
     return pieces  
def sort_strings_with_embedded_numbers(alist):  
     return sorted(alist, key=embedded_numbers)
files = 'file3.txt file11.txt file7.txt file4.txt file15.txt'.split( )
new_list=sort_strings_with_embedded_numbers(files)
str=' '.join(new_list)
print(str)

 

chrfiles = [ 'chr9.txt', 'chr10.txt', 'chr1.txt', 'chr3.txt', 'chr11.txt' ]
chrfiles.sort(key = lambda x:int(re.match('\D+(\d+)\.txt',x).group(1)))
chrfiles


chrfiles = [ '9.txt', '10.txt', '1.txt', '3.txt', '11.txt' ]
chrfiles.sort(key = lambda x:int(re.match('(\d+)\.txt',x).group(1)))
chrfiles


chrfiles = [ '9', '10', '1', '3', '11' ]
chrfiles.sort(key = lambda x:int(re.match('(\d+)',x).group(1)))
chrfiles

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐