我将一些文件合并在一起,但我想要做的是根据第一个字符按字母顺序排序输出。我尝试了以下但这不起作用。
filenames = ['1.txt', '2.txt', '3.txt']
with open('output.txt', 'w') as outfile:
for fname in filenames:
with open(fname) as infile:
for line in infile:
outfile.write(sorted(line))
这是output.txt,因为它代表:
NH4 ^:0.000; 1] 2 [3
H-:0.000; -1] 4 [5
CCL4:0.000; 0] 5 [3
所需的output.txt:
CCL4:0.000; 0] 5 [3
H-:0.000; -1] 4 [5
NH4 ^:0.000; 1] 2 [3
答案 0 :(得分:1)
已更新
from operator import itemgetter
filenames = ['1.txt', '2.txt', '3.txt']
with open('output.txt', 'w') as outfile:
total_lines = []
for fname in filenames:
with open(fname) as infile:
total_lines += map(lambda s: s.strip(' '), infile.readlines())
for line in sorted(total_lines):
outfile.write(line)
答案 1 :(得分:1)
更新以在排序前删除前导空格。
您的问题对解释有点开放,但假设您要对多个文件中的所有行进行排序,您只需使用fileinput.input()
。
import fileinput
filenames = ['1.txt', '2.txt', '3.txt']
with open('output.txt', 'w') as outfile:
outfile.writelines(sorted(line.lstrip() for line in fileinput.input(filenames)))
或者,如果您想要不区分大小写的排序:
import fileinput
import string
filenames = ['1.txt', '2.txt', '3.txt']
with open('output.txt', 'w') as outfile:
outfile.writelines(sorted((line.lstrip() for line in fileinput.input(filenames)), key=string.lower))