我有一个文件,每行都有
Name1 name2 name3
我可以逐行阅读,分割每一行,处理行并逐行输出处理。
但是我想读取整个文件,按中间列排序,然后以输入所用的相同格式输出整个排序文件。
我的第一次尝试在读入每个行时分割每个行以生成元组列表,然后使用key =进行排序,然后重新加入每个元组并逐行输出。
有更多的pythonic方式吗?
答案 0 :(得分:4)
这样的事应该做:
with open('datafile') as fin:
lines = list(fin)
lines.sort(key=lambda line: line.split()[1])
with open('outfile','w') as fout:
fout.writelines(lines)
一些注意事项:
我的排序键有点难看。但是,这里的优点是它保留了与输入文件中完全相同的行。如果我们拆分线然后排序,代码可能会更漂亮,但我们需要在输出上正确连接分割线(加上,空格的运行可能会丢失)
outfile可以是与datafile相同的文件名,以便“有效地”进行更改
如果您需要支持引用字段(field1 "field 2" field3
),那么您需要查看csv
模块。