我在csv文件中有以下行
import csv
with open('testfile.csv', 'wb') as csvfile:
filewriter = csv.writer(csvfile, delimiter = ',')
filewriter.writerow(['var1', 'var2', 'var3', 'var4'])
filewriter.writerow(['var1', 'var2', 'var3', 'var4'])
filewriter.writerow([6.1, 5.0, 3, 420])
filewriter.writerow([6.2, 5.9, 2, 520])
filewriter.writerow([6.5, 5.4, 1, 320])
我的目标是删除重复的行,只选择var3!= 1的行。但是,会返回意外的结果。
with open('testfile.csv', 'rb') as infile, open('testfile_clean.csv', 'wb') as outfile:
infile.next()
for row in infile:
if row[2] != '1':
outfile.write(row)
testfile_clean.csv包含以下行:
var1,var2,var3,var4
6.2,5.9,2,520
6.5,5.4,1,320
它除去了第一行的值,而不是基于var3<> ' 1&#39 ;.任何关于可能发生的事情的想法都将不胜感激!
答案 0 :(得分:2)
使用python的默认文件读取,将为每行提供一个单独的字符串,因此一行将为“6.1,5.0,3,420”。在您发布的代码中,row是该字符串,因此row [2]将是其第三个字符,或者在此行的情况下为“1”,因此您的代码忽略了该行。经典的例子,蟒蛇无条件的美丽可以回来咬你!
解决方案?您将要使用csv.reader打开该文件,该文件会自动按逗号分隔行,以便“6.1,5.0,3,420”行为[“6.1”,“5.0”,“3”,“ 420" 。这是代码:
setInterval
答案 1 :(得分:0)
在写入csv文件时,您正在使用writerow
,它可以为每个条目写入列表。为了读取相同的数据,您需要使用reader
,它可以遍历每一行,您的条目将被视为列表。
import csv
with open('testfile.csv', 'r') as infile, open('testfile_clean.csv', 'w') as outfile:
rows = csv.reader(infile)
next(rows)
writer = csv.writer(outfile)
for row in rows:
print(row)
if row[2] != '1':
writer.writerow(row)