在Python中处理和搜索大文件
抱歉如果这个问题之前已经有人问过,但我找不到相关的页面来描述这个过程。我想做的是把一个大文件(纽约时报语料库)转换成一个单词列表,使用split函数,然后在这个长长的列表中搜索特定的单词。我已经能用这段代码让Python打印出文件内容
words=open('nyt.txt')
for line in words:
print (line)
但我希望能在这个函数之后使用words.split()。
到目前为止,我一直在用一个小的语料库来开发这个程序,我是这样输入的
words= ('A B. C D E F G A. B C D E F G A B C D E F G A B C D E F G')
但是,我不想把纽约时报的内容复制粘贴到括号里(这样做不行,因为文件太大了)。我更希望能把文件的内容直接加载到一个变量里。
再次抱歉,如果这个问题之前有人问过,可能性很大。
4 个回答
0
看看 nltk
吧。这个项目非常庞大,里面有很多处理文本数据的工具。这个项目是用Python语言写的,可以在 http://www.nltk.org/ 找到。
0
我不太确定你想要什么,但你是在找像这样的东西吗?
words = open('README')
word_list = []
for l in words:
word_list.append(l)
如果你打算对文字进行更复杂的处理,建议你看看这个叫做 NLTK 的工具包。
1
你可能想要的东西叫做生成器。在你的情况下,它可能看起来像这样:
def words(lines):
for line in lines:
for word in line.split():
yield word
这个方法是逐行处理文件,所以它不需要一次性把整个文件都读到内存里。yield
这个关键词会把函数的结果变成一个生成器。用法如下:
import sys
for word in words(sys.stdin):
print word
补充一下:如果我这次理解正确的话,你只是想把所有单词读到一个列表里?这很简单:
lines = open('nyt.txt')
words = []
for line in lines:
words.extend(line.split())
print words