读写CSV文件时筛选特定的行
有些时候,我们并不需要文件中所有的数据。例如,我们可能只需要一个包含特定词或数字的行的子集,或者是与某个具体日期关联的行的子集。在这些情况下,我们可以用Python筛选出特定的行来使用。
下面主要来讲在输入文件中筛选出特定行的3种方法:
1.行中的值满足某个条件;
2.行中的值属于某个集合;
3.行中的值匹配于某个模式(正则表达式)。
其实,这三种筛选方法的代码在结构上是一致的。通用结构如下:
for row in filereader:
***if value in row meets some business rule or set of rules:***
do something
else:
do something else
下面我们来详细讨论一下上述3种方法。
行中的值满足某个条件
1.基础Python
在之前的样例中,如果我们只想保留供应商名字为Supplier Z或成本大于$600.00的行,并将结果写入输出文件。代码如下:
#!/usr/bin/env python3
import csv
import sys
input_file = sys.argv[1]
output_file = sys.argv[2]
with open(input_file, 'r', newline='') as csv_in_file:
with open(output_file, 'w', newline='') as csv_out_file:
filereader = csv.reader(csv_in_file)
filewriter = csv.writer(csv_out_file)
header = next(filereader)
filewriter.writerow(header)
for row_list in filereader:
supplier = str(row_list[0]).strip()
cost = str(row_list[3]).strip('$').rep