我正在尝试迭代一个未经破坏的csv文件(它没有特定的标题)。该文件由仪器生成。我需要选择具有特定列值的特定行并创建另一个文件。以下是文件布局的示例
,success, (row1)
1,2,protocol (row2)
78,f14,34(row3)
,67,34(row4)
,f14,34(row5)
3,f14,56,56(row6)
我需要选择'fi4'值的所有行。以下是代码
import csv
import sys
reader = csv.reader(open('c:/test_file.csv', newline=''), delimiter=',', quotechar='|')
for row in reader:
print(','.join(row))
我无法超越这一点。
答案 0 :(得分:1)
你几乎就在那里:
for row in reader:
if row[1] == 'f14':
print(','.join(row))
答案 1 :(得分:0)
您只需通过检查列的值来检查并查看该行是否是您感兴趣的行,看看它是否是您要查找的内容。这可以通过简单的if row[1] == 'f14'
条件语句来完成。然而,这会在任何空行上失败 - 它看起来像你的输入文件可能有 - 所以你需要在前面检查另一个以确保该行至少包含那么多列。
要创建另一个只包含其中行的csv文件,您需要将通过所有检查的每一行写入另一个为输出打开的文件 - 而不是打印出行。这是将行写入另一个文件的非常简洁的方法。
(注意:我不确定为什么在quotechar='|'
调用的代码中有csv.reader()
,因为输入文件中没有任何引号字符,所以我把它留了在下面的代码中 - 您可能需要将其添加回来,如果确实存在,那将是什么。)
import csv
with open('test_file.csv', newline='') as infile, \
open('test_file_out.csv', 'w', newline='') as outfile:
csv.writer(outfile).writerows(row for row in csv.reader(infile)
if len(row) >= 2 and row[1] == 'f14')
之后'test_file_out.csv'
文件的内容:
78,f14,34(row3)
,f14,34(row5)
3,f14,56,56(row6)