1
CSV文件,我必須到CSV文件,我需要對它們進行處理並行,這樣的:處理兩個並行
import csv
with open(f1) as s1, open(f2) as s2:
for v1 in csv.reader(s1), v2 in csv.reader(s2):
assert v1[0] == v2[0]
myfunc(v1[1:],v2[1:])
唉,看來我不能做for a in b, c in d
:
NameError: global name 'v2' is not defined
我想我可以做類似
with open(f1) as s1, open(f2) as s2:
r1 = csv.reader(s1)
r2 = csv.reader(s2)
while True:
try:
v1 = r1.next()
except StopIteration:
v1 = None
try:
v2 = r2.next()
except StopIteration:
v2 = None
if (not v1) and (not v2):
break
assert v1 and v2
assert v1[0] == v2[0]
myfunc(v1[1:],v2[1:])
但它看起來不漂亮。
那麼,我的其他選擇是什麼? (我做不是想用paste
)。
嘗試'爲V1,V2拉鍊(CSV。閱讀器(s1),csv.reader(s2))' – 2014-09-24 15:14:29
要添加到@ColonelThirtyTwo,如果兩個csv文件有不均勻的行,您可能還想使用'itertools.izip_longest'。 – 2014-09-24 15:16:18
或者如果兩個文件的長度相同,則使用'itertools.izip()'。 – martineau 2014-09-24 15:25:59