我有一个文件,每一行都像
名称1 名称2 名称3
我可以逐行读取它,分割每一行,处理该行并逐行输出处理后的内容。
但是我想读入整个文件,按中间列排序,然后以与输入相同的格式输出整个排序文件。
我的第一次尝试是在读入每行时拆分每一行以创建一个元组列表,然后使用 key= 进行排序,然后重新加入每个元组并逐行输出。
有没有更蟒蛇的方式来做到这一点?
我有一个文件,每一行都像
名称1 名称2 名称3
我可以逐行读取它,分割每一行,处理该行并逐行输出处理后的内容。
但是我想读入整个文件,按中间列排序,然后以与输入相同的格式输出整个排序文件。
我的第一次尝试是在读入每行时拆分每一行以创建一个元组列表,然后使用 key= 进行排序,然后重新加入每个元组并逐行输出。
有没有更蟒蛇的方式来做到这一点?
应该这样做:
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
模块。