在Python中遍历文件中的单词
我需要逐个查看一个很大的文件里的单词,这个文件只有一行,而且这一行特别长。我知道有一些方法可以逐行读取文件,但在我的情况下不适用,因为这个文件就只有一行。
有没有其他的办法呢?
8 个回答
4
你真的应该考虑使用生成器。
def word_gen(file):
for line in file:
for word in line.split():
yield word
with open('somefile') as f:
word_gen(f)
6
长长的一行?我猜这行数据太大了,放不下在内存里,所以你需要一些缓冲的方式。
首先,这种格式不好;如果你能控制这个文件,最好每行只放一个单词。
如果不能这样做,可以试试下面的方式:
line = ''
while True:
word, space, line = line.partition(' ')
if space:
# A word was found
yield word
else:
# A word was not found; read a chunk of data from file
next_chunk = input_file.read(1000)
if next_chunk:
# Add the chunk to our line
line = word + next_chunk
else:
# No more data; yield the last word and return
yield word.rstrip('\n')
return
8
这其实要看你怎么定义“单词”。不过你可以试试这个:
f = file("your-filename-here").read()
for word in f.split():
# do something with word
print word
这个代码会把空格当作单词的分隔符。
当然,记得要正确地打开和关闭文件,这只是一个简单的例子。