我的文件内容如下:
Dnext_0[11]
Dnext_1[0]
Dnext_0[0]
Dnext_0[128]
Dnext_0[1]整理完后,我想要:
Dnext_0[0]
Dnext_0[1]
Dnext_0[11]
Dnext_0[128]
Dnext_1[0]我试过这样做:
with open('testfile') as f:
sorted_file = sorted(f)
print sorted_file但它并没有给我我想要的。
发布于 2014-04-25 03:40:42
其思想是使用sorted()对您指定的key lambda函数进行排序,该函数使用正则表达式提取Dnext_后面的数字和括号内的数字。
import re
pattern = re.compile('Dnext_(\d+)\[(\d+)\]')
with open('input.txt') as f:
print sorted(f, key=lambda x: map(int, pattern.search(x).groups()))指纹:
Dnext_0[0]
Dnext_0[1]
Dnext_0[11]
Dnext_0[128]
Dnext_1[0]Dnext_(\d+)\[(\d+)\]正则表达式使用捕获组提取Dnext_后的数字和括号中的数字:
>>> import re
>>> pattern = re.compile('Dnext_(\d+)\[(\d+)\]')
>>> pattern.search('Dnext_0[11]').groups()
('0', '11')map(int, ... )帮助将提取的数字转换为python整数(参见map()):
>>> map(int, pattern.search('Dnext_0[11]').groups())
[0, 11]希望这能有所帮助。
发布于 2014-04-25 03:40:19
创建一个函数,返回包含要按行排序的元组,并将其用作键。
sorted(f.readlines(), key=lambda x:(int(x[6]), int(x.split('[')[1].split(']')[0])))发布于 2014-04-25 03:42:00
看看这是否有帮助..。结果应该是:[“Dnext_”,'Dnext_11','Dnext_128','Dnext_1','Dnext_1']
with open('testfile') as f:
l=f.readline()
a=l.split()
b=sorted(a)
print "original data is is ",l
print "Original data with comma is ",a
print "sorted data is ",b当我贴出.Below的答案时,这个问题被改变了,答案并不完美,但可能对你有帮助:
with open('testfile') as f:
l=f.readlines()
#=l.split()
b=sorted(l)
print "original data is is ",l
#print "Original data with comma is ",a
print "sorted data is ",b
for i in b:
print ihttps://stackoverflow.com/questions/23283658
复制相似问题