2024-04-19 08:30:28 发布
网友
我有一个单行文件,我想逐字阅读,也就是说,用空格分隔单词。有没有一种方法可以在不将数据加载到内存和使用split的情况下实现这一点?文件太大。你知道吗
您可以逐字符读取文件,并在每个新的空格后生成一个单词,下面是一个简单的解决方案,用于单个空格的文件,您应该针对复杂的情况(制表符、多个空格等)对其进行优化。你知道吗
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。你知道吗
12
下次调用此函数时,它将读取下一个单词,依此类推。。。你知道吗
您可以逐字符读取文件,并在每个新的空格后生成一个单词,下面是一个简单的解决方案,用于单个空格的文件,您应该针对复杂的情况(制表符、多个空格等)对其进行优化。你知道吗
示例:
它使用一个生成器来避免分配一大块内存
试试这个小功能:
然后要使用它,您可以执行以下操作:
这将读取文件中的第一个单词,因此如果您的文件是这样的:
那么输出应该是
12
。你知道吗下次调用此函数时,它将读取下一个单词,依此类推。。。你知道吗
相关问题 更多 >
编程相关推荐