Add*_*dem 6 python csv iteration
所以我基本上有一个非常长的字符串列表,以及一个包含一列字符串和一列数字的CSV文件.我需要遍历极长的字符串列表,并为每个字符串循环遍历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)
Run Code Online (Sandbox Code Playgroud)
我可以使用它的CSV文件的示例可以是
a, 1
great, 2
Run Code Online (Sandbox Code Playgroud)
当然csv.reader(f)创建一个我只能循环一次的迭代.我已经在其他地方看到了使用itertools的建议,但我发现的所有建议都是针对涉及循环CSV文件少量的问题,通常只是两次.如果我尝试使用它循环CSV多次,我不确定这对于内存消耗意味着什么,而且一般来说我只是想知道解决这个问题的最聪明的方法.
您需要"重置"文件迭代器:
import csv
sList = ['a cat', 'great wall', 'mediocre wall']
vals = []
with open('data.csv', 'r') as f:
r = csv.reader(f)
for w in sList:
val = 0
f.seek(0) #<-- set the iterator to beginning of the input file
for row in r:
print(row)
if row[0] in w:
val += 1
vals.append(val)
Run Code Online (Sandbox Code Playgroud)