这里有一个奇怪的问题。
我有一个我要迭代的.txt
文件。我可以从文件中将所有单词都放到一个数组中,这很好,但我想知道怎么做,我如何迭代整个文件,但不是单个字母,而是单词本身。
我希望能够浏览包含文件中所有文本的数组,并基本上计算出现一个单词的所有实例。
唯一的问题是我不知道如何为它编写代码。
我尝试使用for循环,但是当我想要整个单词时,它只会迭代每一个字母。
答案 0 :(得分:12)
此代码读取空格分隔的file.txt
f = open("file.txt", "r")
words = f.read().split()
for w in words:
print w
答案 1 :(得分:3)
file = open("test")
for line in file:
for word in line.split(" "):
print word
答案 2 :(得分:1)
未测试:
def produce_words(file_):
for line in file_:
for word in line.split():
yield word
def main():
with open('in.txt', 'r') as file_:
for word in produce_words(file_):
print word
答案 3 :(得分:1)
如果你想循环遍历整个文件,那么明智的做法是迭代它,取出行并将它们分成单词。逐行工作是最好的,因为这意味着我们不会首先将整个文件读入内存(对于大文件,这可能需要花费大量时间或导致内存耗尽):
with open('in.txt') as input:
for line in input:
for word in line.split():
...
请注意,如果要保留更多空格,可以使用line.split(" ")
,因为line.split()
会删除所有多余的空格。
另请注意我使用the with
statement打开文件,因为它更易读并处理关闭文件,即使是异常也是如此。
虽然这是一个很好的解决方案,但如果你在第一个循环中没有做任何事情,那么效率也会有点低。要将此减少为一个循环,我们可以使用itertools.chain.from_iterable
和generator expression:
import itertools
with open('in.txt') as input:
for word in itertools.chain.from_iterable(line.split() for line in input):
...