【发布时间】:2015-12-16 13:18:18
【问题描述】:
我有 2 个 .csv 文件,它们都包含 3001 行,我必须对它们都做同样的事情,所以我想知道是否可以将它放入 1 个 for 循环中。
所以我想聪明点就试试这个:
self.csv_readingon = csv.reader(open('heisig6_reading_ja_on.csv'))
self.csv_readingkun = csv.reader(open('heisig6_reading_ja_kun.csv'))
for [d1, d2] in [self.csv_readingon, self.csv_readingon]:
for i, d in enumerate([d1, d2]):
# Do same stuff to both files
但是这会导致:
for [d1, d2] in [self.csv_readingon, self.csv_readingon]:
ValueError: too many values to unpack (expected 2)
是否可以将它很好地放入 1 个 for 循环中,或者我应该为 1 个文件 (d1) 制作 1 个 for 循环,然后手动将第二个 csv 文件中的一行分配给 d2?
编辑:.csv 文件彼此不相关。两者都将被放入 SQLite 数据库中的单独表中。所以可能元组不是要走的路。它们只是结构相同,所以只有表名不同。
【问题讨论】:
-
zip.... -
你也需要索引吗?
-
@KarolyHorvath 我不认为
zip会满足OP 的要求...zip([1, 2, 3], [4, 5, 6])=>[(1, 4), (2, 5), (3, 6)] -
@OP 你打算对这些东西做什么?您是否需要将每个 csv 文件中的项目相互比较,还是只想处理第一个 csv 文件,然后处理第二个 csv 文件。请更新您的问题,使其更具体。
-
@OP:如果您想将每个文件的数据放入不同的表中,那么让一个 for 循环首先遍历一个文件中的所有行,然后遍历文件中的所有行是行不通的。其他文件。 zip 解决方案在这里也不是很好,因为两个文件具有相同的长度只是巧合(?)。我将 for 循环放入一个以文件句柄和表名作为参数的函数中,并首先为第一个和第二个文件调用此函数。