我下载每周CSV文件,我只需要几行特定的数据。所有相关行都以“发票”开头,这是我希望Python查找的标准。我只是不知道怎么让节目这么做。
我试过用这个:
import csv
with open("OpenInvList_9428.csv" , 'rb') as file:
reader = csv.reader(file, delimiter = ',')
for row in reader:
if "Invoice" in row:
print ','.join(row)我知道这句话有些地方不对:
if "Invoice" in row:我只是不确定是什么。
发布于 2013-10-25 20:06:47
如果行以Invoice开头,那么行中的第一列必须以Invoice开头,对吗?所以:
with open("OpenInvList_9428.csv" , 'rb') as file:
reader = csv.reader(file, delimiter = ',')
for row in reader:
if row[0].startswith('Invoice'):
print ','.join(row)if "Invoice" in row:,您尝试检查其中任何列是否确实是"Invoice"-that,如果该行以Invoice,开头,它将工作,但如果以Invoice 23,开头,则不会。这是因为row是一个字符串列表,而不是字符串,in对列表就是这样做的。
如果要检查任何列是否将Invoice作为子字符串,则如下所示:
if any('Invoice' in column for column in row):或者,检查这些列是否以Invoice开头
if any(column.startswith('Invoice') for column in row):但是,如果您要解析CSV的唯一原因是将它重新加入到另一个CSV中,那么为什么首先要这样做呢?如果CSV中没有引用,您可以做同样的事情,更简单地如下所示:
with open("OpenInvList_9428.csv" , 'rb') as file:
for line in file:
if line.startswith('Invoice'):
print line在那里,如果'Invoice' in line是任何列的子字符串(因为在这种情况下,它是行的子字符串),Invoice就会找到它。
如果有任何引用,您将生成无效的输出,而更简单的代码则会使其正确。
https://stackoverflow.com/questions/19598541
复制相似问题