在Python中不使用split通过word读取文件

2024-04-19 08:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个单行文件,我想逐字阅读,也就是说,用空格分隔单词。有没有一种方法可以在不将数据加载到内存和使用split的情况下实现这一点?文件太大。你知道吗


Tags: 文件数据方法内存情况单词split空格
2条回答

您可以逐字符读取文件,并在每个新的空格后生成一个单词,下面是一个简单的解决方案,用于单个空格的文件,您应该针对复杂的情况(制表符、多个空格等)对其进行优化。你知道吗

def read_words(filename):
    with open(filename) as f:
        out = ''
        while True:
            c = f.read(1)
            if not c:
                break
            elif c == ' ':
                yield out
                out = ''
            else:
                out += c

示例:

for i in read_words("test"):
    print i 

它使用一个生成器来避免分配一大块内存

试试这个小功能:

def readword(file):
c = ''
word = ''
while c != ' ' and c != '\n':
    word += c
    c = file.read(1)
return word

然后要使用它,您可以执行以下操作:

f = open('file.ext', 'r')
print(readword(f))

这将读取文件中的第一个单词,因此如果您的文件是这样的:

12 22 word x yy
another word
...

那么输出应该是12。你知道吗

下次调用此函数时,它将读取下一个单词,依此类推。。。你知道吗

相关问题 更多 >