您好我正在尝试使用python迭代csv文件中的每一行,并为每一行创建新的csv文件。所以我的思维过程是打开文件,循环遍历每一行,每行创建一个名为n_file.csv
的文件(其中'n'是迭代),所以这是我的代码:
import csv
csvfile = open('sample.csv','rb')
csvFileArray = []
for row in csv.reader(csvfile, delimiter = '.'):
csvFileArray.append(row)
print(row)
n = 0
n += 1
file = open(str(n) + "_file.csv", 'w+')
file.write(str(row))
print(n) # returns 1 every time
不幸的是,这不是正确的迭代(因为它只创建一个名为1_file.csv
的文件并且每次都覆盖它)。我该如何解决这个问题?
答案 0 :(得分:0)
每次将n设置为0,因为您在循环内声明了它。在for语句之前声明它。
答案 1 :(得分:0)
试试这个:
import csv
with open('sample.csv','rb') as csvfile:
for i, row in enumerate(csv.reader(csvfile, delimiter = '.')):
with open("{}_file.csv".format(i), "w") as file:
file.write(str(row))
答案 2 :(得分:0)
for row in csv.reader(csvfile, delimiter='.'):
csvFileArray.append(row)
print(row)
n = 0 # << you do n=0 each loop!!
n += 1
所以最好是,
for idx, row in enumerate(csv.reader(csvfile, delimiter='.')):
csvFileArray.append(row)
print(row)
file = open(str(idx) + "_file.csv", 'w+') # enumerate do same as you want!
file.write(str(row))