- 此问题在此处已有答案**:
Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(5个答案)
Proper way to reset csv.reader for multiple iterations?(3个答案)
3天前关闭。
我有一个很长的字符串列表,还有一个CSV文件,包含一列字符串和一列数字,我需要遍历这个很长的字符串列表,对于每一个字符串,遍历CSV文件的行,检查第一列中的每个字符串,看看它是否出现在我的字符串中,如果出现了,将另一列中的数字加到某个值上。一个简单的例子是
import csv
sList = ['a cat', 'great wall', 'mediocre wall']
vals = []
with open('file.csv', 'r') as f:
r = csv.reader(f)
for w in sList:
val = 0
for row in r:
if row[0] in w:
val += 1
vals.append(val)
下面是一个CSV文件的示例,我可以使用它
a, 1
great, 2
当然csv.阅读器(f)创建了一个只能循环一次的可迭代对象,我在其他地方看到过使用itertools的建议,但我发现的所有建议都是针对涉及循环CSV文件少量次数的问题,通常只有两次,如果我尝试使用这个来循环CSV文件很多次,我不确定这对内存消耗意味着什么,总的来说,我只是想知道解决这个问题的最聪明的方法。
1条答案
按热度按时间g0czyy6m1#
您需要“重置”文件迭代器: