Python - 根据第一个单词对文件中的行进行排序?

时间:2015-11-06 22:58:10

标签: python list file sorting

我有一个程序可以将列表打印到文件中,但是我希望它们根据第一个单词进行排序,这样匹配的项目就会相互靠近。

例如,该文件可能包含:

Pizza 5  
Taco 6  
Pizza 4  
Taco 8

我希望代码读取文件并对内容进行排序,以便顺序基于匹配的第一个单词,将类似内容写入文件:

Pizza 5  
Pizza 4  
Taco 8  
Taco 6

任何帮助?

3 个答案:

答案 0 :(得分:5)

您可以简单地阅读这些行,按字母顺序对它们进行排序并将它们写回同一个文件:

with open("myfile", "r+") as f:
    lines = f.readlines()
    lines.sort()        
    f.seek(0)
    f.writelines(lines)

这假设文件适合RAM。如果没有,您需要实现某种合并排序。

答案 1 :(得分:0)

只需使用readlines(),即将文件行读入列表并将sorted()应用于该列表。

答案 2 :(得分:-2)

您可以创建list,然后循环浏览sorted列表以获得所需的结果:

L = []
with open("yourfile.txt", "r") as f:
    for line in f:
        L.append(line)
for i in sorted(L):
    print i.strip()

输出:

Pizza 4
Pizza 5
Taco 6
Taco 8