【发布时间】:2015-12-30 17:21:30
【问题描述】:
我有一个大文本文件 (parsed.txt),其中包含近 1.500.000 行。每一行都是这种格式:
foobar foo[Noun]+lAr[A3pl]+[Pnon]+[Nom]
loremipsum lorem[A1sg]+lAr[A3pl]+[Pl]+[Nom]
我在空格之后给出第二个字段,并使用此函数获取空格之前的第一个字段:
def find_postag(word,postag):
with open('parsed.txt',"r") as zemberek:
for line in zemberek:
if all(i in line for i in (word,postag)):
if line.split(" ")[0].startswith(word) and line.split(" ")[1] == word+postag:
selectedword = line.split(" ")[0]
break
return selectedword
但是,它运行得太慢了。我不知道如何才能使这个过程更快。我的想法是:parsed.txt 文件按字母顺序排列。如果给定word 变量以“z”字母开头,它会不必要地读取近 900.000 行。如果给定的word 以“z”字母开头,则从第 900.000 行检查可能会更快。有没有更好的想法以及如何实施?
【问题讨论】:
-
考虑只读取和解析文件一次。将其内容存储在字典中以便快速查找。其余的数据也可以解析成更友好的东西。
标签: python string file file-io