python文件内容排序

2024-09-25 00:33:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我的文件内容如下:

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

但它没有给我想要的。你知道吗


Tags: 文件内容aswith分类openfilesorted
3条回答

其思想是使用^{}对数据进行排序,指定keylambda函数,该函数使用regular expression提取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(int, pattern.search('Dnext_0[11]').groups())
[0, 11]

希望有帮助。你知道吗

看看这是否有帮助。。结果应为: ['Dnext\u 0[0]'、'Dnext\u 0[11]'、'Dnext\u 0[128]'、'Dnext\u 0[1]'、'Dnext\u 1[0]']

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

我发布答案时,问题已更改。下面的答案并不完美,但可能对您有所帮助:

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 i

创建一个返回元组的函数,其中包含要按其排序的行,并将其用作键。你知道吗

sorted(f.readlines(), key=lambda x:(int(x[6]), int(x.split('[')[1].split(']')[0])))

相关问题 更多 >