如何根据Python中的字母表重新排列行的顺序
我有一个非常大的txt文件(>1GB),它包含大约800万个项目,每个项目有三个单词,用一个空格“”分隔。示例如下所示:如何根据Python中的字母表重新排列行的顺序,python,Python,我有一个非常大的txt文件(>1GB),它包含大约800万个项目,每个项目有三个单词,用一个空格“”分隔。示例如下所示: Antonym abbreviate elongate InstanceOf george_toma person AtLocation cruelty war NotCapableOf plant speak_to_human RelatedTo note single DerivedFrom translatorese ese Antonym baby elder Ant
Antonym abbreviate elongate
InstanceOf george_toma person
AtLocation cruelty war
NotCapableOf plant speak_to_human
RelatedTo note single
DerivedFrom translatorese ese
Antonym baby elder
Antonym able cane
我想要得到的是一个文件,它根据第一个单词-第二个单词-第三个单词的字母表重新排列所有项目。结果应该是:
Antonym abbreviate elongate
Antonym able cane
Antonym baby elder
AtLocation cruelty war
DerivedFrom translatorese ese
InstanceOf george_toma person
NotCapableOf plant speak_to_human
RelatedTo note single
使用Python有什么简单的方法吗?非常感谢。按单词的字母顺序排序与按行的字母顺序排序相同,因此:
with open('infile_name','r') as input_file:
lines = input_file.readlines()
lines.sort()
output_file = open('outfile_name', 'w')
output_file.writelines(lines)
对于如此大的文件,此代码可能需要一些时间
编辑以反映用户的观点:
按单词的字母顺序排序与按行的字母顺序排序相同,因此:
with open('infile_name','r') as input_file:
lines = input_file.readlines()
lines.sort()
output_file = open('outfile_name', 'w')
output_file.writelines(lines)
对于如此大的文件,此代码可能需要一些时间
编辑以反映用户的观点:
如果文件中有混合大小写,则另一种解决方案不起作用,因为它按照字符在内存中的表示顺序进行排序。这意味着您的大写字母将排在小写字母之前(在OP的例子中,似乎只有大写字母,所以这可能没问题,但我们不知道完整的数据集) 前
sorted()
有另一个参数key,可以更改比较每个字母的方法。因此,如果您将每个转换为大写,您将看到它不区分大小写:
In [6]: sorted(['a', 'B', 'b', 'A'], key=lambda s:s.upper())
Out[6]: ['a', 'A', 'B', 'b']
如果文件中有混合大小写,则另一种解决方案不起作用,因为它按照字符在内存中的表示顺序进行排序。这意味着您的大写字母将排在小写字母之前(在OP的例子中,似乎只有大写字母,所以这可能没问题,但我们不知道完整的数据集) 前
sorted()
有另一个参数key,可以更改比较每个字母的方法。因此,如果您将每个转换为大写,您将看到它不区分大小写:
In [6]: sorted(['a', 'B', 'b', 'A'], key=lambda s:s.upper())
Out[6]: ['a', 'A', 'B', 'b']