在Python中迭代文件的单词

pav*_*nis 12 python io file

我需要遍历一个大文件的单词,该文件由一个长的长行组成.我知道逐行迭代文件的方法,但由于它的单行结构,它们在我的情况下不适用.

任何替代品?

And*_*ini 7

这实际上取决于你对单词的定义.但试试这个:

f = file("your-filename-here").read()
for word in f.split():
    # do something with word
    print word
Run Code Online (Sandbox Code Playgroud)

这将使用空白字符作为单词边界.

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


Pet*_*rin 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
Run Code Online (Sandbox Code Playgroud)


小智 0

像平常一样读入该行,然后将其拆分为空格以将其分解为单词?

就像是:

word_list = loaded_string.split()
Run Code Online (Sandbox Code Playgroud)