我在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。但是,会返回意外结果。在
^{pr2}$测试文件_清理.csv包含以下行:
var1,var2,var3,var4
6.2,5.9,2,520
6.5,5.4,1,320
它去掉了第一行的值,而不是基于是否为var3<;>1。对可能发生的事情有任何想法都将不胜感激!在
使用python的默认文件读取,将把每一行作为一个单独的字符串,因此一行是“6.1,5.0,3420”。在您发布的代码中,row是那个字符串,所以row[2]将是它的第三个字符,或者在这一行中是“1”,因此您的代码忽略了这一行。典型的例子说明了python的非类型化美可以回来咬你!在
解决方案?你要用打开文件csv.reader,它自动用逗号分隔行,因此行“6.1,5.0,3420”将为[“6.1”,“5.0”,“3”,“420”]。下面是实现此目的的代码:
在写入csv文件时,您使用的是
writerow
,它可以为每个条目写入列表。为了读取相同的数据,您需要使用reader
,它可以覆盖每一行,您的条目将被视为一个列表。在相关问题 更多 >
编程相关推荐