使用Python按第一个单词对文件/行进行排序

使用Python按第一个单词对文件/行进行排序,python,Python,如何对文件进行排序,使排序的基础仅为第一个单词?第一个单词不是固定长度 我正在努力: f = open("temp", "r") lines = f.readlines() print lines lines.sort() f2 = open('out.txt', 'w') f2.write(''.join(lines)) # Write a sequence of strings to a file f2.close() f.close() 要按每行中的第一个单词进行排序,需要拆分行并将第一

如何对文件进行排序,使排序的基础仅为第一个单词?第一个单词不是固定长度

我正在努力:

f = open("temp", "r")
lines = f.readlines()
print lines
lines.sort()
f2 = open('out.txt', 'w')
f2.write(''.join(lines)) # Write a sequence of strings to a file
f2.close()
f.close()

要按每行中的第一个单词进行排序,需要拆分行并将第一个单词用作排序键:

lines.sort(key=lambda a_line: a_line.split()[0])

能否将
行.sort()替换为:

lines.sort(key=lambda x: x.split()[0] if len(x.split()) >0 else None)

还有,;对于任何可能的空白新行,您需要在
键中输入一个条件
;否则您将面临错误(
索引器错误:列表索引超出范围
)。

我确信您应该会遇到错误。我看到,列表需要转换为字符串。修正只是为了我的教育,假设我想按前两个单词排序,我将如何修改?只需从lambda返回两个值:例如
行.sort(key=lambda a_行:(a_行.split()[0],a_行.split()[1])
@Marcin
a_行.split()[2]
会更短,更容易阅读。而且,如果一行少于两个单词,它不会引发
索引器
,就像您评论中的示例那样。