如果该行以 开头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"
-也就是说,如果行以 开头,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
是任何列的子字符串,就会找到它(因为在这种情况下,它是该行的子字符串)。
如果有任何引用,您将生成无效的输出,而更简单的代码则正确。