在Python中遍历文件中的单词

14 投票
8 回答
34285 浏览
提问于 2025-04-17 04:11

我需要逐个查看一个很大的文件里的单词,这个文件只有一行,而且这一行特别长。我知道有一些方法可以逐行读取文件,但在我的情况下不适用,因为这个文件就只有一行。

有没有其他的办法呢?

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

这个代码会把空格当作单词的分隔符。

当然,记得要正确地打开和关闭文件,这只是一个简单的例子。

撰写回答