Parsing 从非结构化csv文件中选择特定行并使用python写入另一个文件

Parsing 从非结构化csv文件中选择特定行并使用python写入另一个文件,parsing,csv,python-3.x,Parsing,Csv,Python 3.x,我试图遍历一个未压缩的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

我试图遍历一个未压缩的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))
我无法超越这一点。

你就快到了:

for row in reader:
    if row[1] == 'f14':
        print(','.join(row))

您只需要通过检查列的值来检查行是否是您感兴趣的行,并查看它是否是您要查找的。这可以通过一个简单的
if行[1]='f14'
条件语句来实现。然而,这将在任何空行上失败——看起来您的输入文件可能有空行——因此您需要在该检查之前进行另一次检查,以确保该行中至少有那么多列

要创建另一个仅包含这些行的csv文件,您只需将通过所有检查的每一行写入另一个打开以进行输出的文件,而不是打印该行,或者除了打印该行之外。这里有一种非常简洁的方法,可以将行写入另一个文件

(注意:我不确定为什么在
csv.reader()
调用的代码中有
quotechar='|'
,因为显示的输入文件中没有任何引号字符,所以我在下面的代码中遗漏了它——如果确实有引号字符,您可能需要重新添加它。)

'test\u file\u out.csv'
文件的内容:

78,f14,34(第3行)
,f14,34(第5排)
第3、第14、56、56行(第6行)

非常感谢你,马蒂诺……这很有帮助
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')