我正在处理一个非常大的文本文件(约3.77 GB),并尝试提取特定单词出现的所有句子并写出文本文件。
所以大文本文件只有很多行:
line 1 text ....
line 2 text ....
我还从文本文件中提取了唯一的单词列表,并希望提取每个单词出现的所有句子,并写出与单词相关的上下文。理想情况下,输出文件的格式为
word1 \t sentence 1\n sentence 2\n sentence N\n
word2 \t sentence 1\n sentence 2\n sentence M\n
我现有的代码是这样的:
fout=open('word_context_3000_4000(4).txt','a')
for x in unique_word[3000:4000]:
fout.write('\n'+x+'\t')
fin=open('corpus2.txt')
for line in fin:
if x in line.strip().split():
fout.write(line)
else:
pass
fout.close()
由于唯一单词列表很大,所以我按块处理单词列表块。但是,不知何故,代码无法获取所有单词的上下文,只返回了唯一单词列表中前几百个单词的上下文。
之前是否有人处理过类似的问题?我正在使用python,顺便说一句。
非常感谢。
答案 0 :(得分:1)
第一个问题,你永远不会关闭fin
。
也许你应该尝试这样的事情:
fout=open('word_context_3000_4000(4).txt','a')
fin=open('corpus2.txt')
for x in unique_word[3000:4000]:
fout.write('\n'+x+'\t')
fin.seek(0) # go to the begining of the file
for line in fin:
if x in line.strip().split():
fout.write(line)
else:
pass
fout.close()
fin.close()