Python CSV模块,在循环中只执行一次语句

时间:2014-12-11 14:42:53

标签: python csv

我想在Python中使用csv模块修改CSV文件。

for row in csv循环中,我有另一个while循环,其中包含2个语句,我想为每个i执行一次。以下是代码段,其中list1list2是两个不同的字符串列表。

2个语句位于while循环中。我想要他们。

f = open('file.csv', 'rb')
csv_in = csv.reader(f, quotechar='"', quoting=csv.QUOTE_NONE)

list_length = len(list1)

for row in csv_in:
    i = 0
    while i < list_length:
        if list1[i] == row[0]:

            # Execute the next 2 lines just once for every i
                o = open(list2[i], 'wb')
                csv_out = csv.writer(o, quotechar='"', quoting=csv.QUOTE_NONE)

            final_list = [row[-2] + ';' + row[-1]]
            csv_out.writerows([final_list])

        i += 1

f.close()
o.close()

2 个答案:

答案 0 :(得分:0)

您可以简单地使用另一个if,例如紧接在这两行之前的if i == 0:

答案 1 :(得分:0)

您可以使用已经使用i的设置保存。

f = open('file.csv', 'rb')
csv_in = csv.reader(f, quotechar='"', quoting=csv.QUOTE_NONE)
# use a set saving which i's already used
set_i = set()
for row in csv_in:
    i = 0
    while i < list_length:
        if list1[i] == row[0]:

            # Execute the next 2 lines just once for every i using the set
            if not i in set_i:
                set_i.add(i)
                o = open(list2[i], 'wb')
                csv_out = csv.writer(o, quotechar='"', quoting=csv.QUOTE_NONE)

            final_list = [row[-2] + ';' + row[-1]]
            csv_out.writerows([final_list])

        i += 1

f.close()
o.close()