【发布时间】:2015-10-31 00:00:49
【问题描述】:
我正在解析一个非常大的 CSV 文件。我只对其中的 2 行感兴趣(标题为 Ccy1 和 Ccy2 的行)。
到目前为止,我的方法是解析整个文件,并从列表中删除任何不在“已批准”字段列表中的字段。
我在一个只有 3 行的小示例文件上进行了尝试,它运行良好。 当我解析包含 107 行的真实文件时,剩下的不仅仅是“已批准”字段。
为什么它不删除所有不在列表中的值。
这是我当前的脚本:
import csv
data = csv.reader(open('real_sample.csv'))
fields = data.next()
ccy_fields = ['Ccy1', 'Ccy2']
print 'fields: ' + str(fields)
print 'fields to keep: ' + str(ccy_fields)
for item in fields:
if str(item) not in ccy_fields:
fields.remove(item)
print "fields: " + str(fields)
【问题讨论】:
-
首先,你在 for 循环中的缩进是关闭的。不确定这是否只是复制粘贴错误!
-
您正在从当前正在迭代的列表中删除项目,这是一种不好的做法。请参阅我的回答 here 了解原因。