处理内存中的文件

2024-04-20 00:35:39 发布

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

我有一个文件,每行像

名称1名称2名称3

我可以逐行阅读,拆分每一行,逐行处理并输出处理后的数据。你知道吗

但是,我想读入整个文件,按中间列排序,然后以输入的格式输出整个排序的文件。你知道吗

我的第一次尝试是在读入时拆分每一行,形成一个元组列表,然后使用key=进行排序,然后重新连接每个元组并逐行输出。你知道吗

有没有更像Python的方法?你知道吗


Tags: 文件数据方法key名称列表排序格式
1条回答
网友
1楼 · 发布于 2024-04-20 00:35:39

这样做应该:

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模块。

相关问题 更多 >