这是一个例子。它假设 csv 文件名为“input.csv”,并且它写入文件“output.csv”中与“Paris”、“Trevor Wilson”不匹配的行。
它使用来自itertools 文档grouper
的配方将行组合成 3 组。
请注意,由于没有明确定义的标准,csv 文件的语法差异很大。csv
如果您的真实输入文件与您发布的示例不匹配,则值得查看该模块的文档。例如,我使用该skipinitialspace
选项告诉解析器在分隔符之后立即忽略空格。
import csv
from itertools import *
# see recipies section in itertools docs
# http://docs.python.org/2/library/itertools.html
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
with open('input.csv') as f:
data = csv.reader(f, skipinitialspace=True)
with open('output.csv', 'w') as output_f:
output = csv.writer(output_f)
for city, names, blank in grouper(data, 3, []):
if not (city[0] == 'Paris' and 'Trevor Wilson' in names):
output.writerow(city)
output.writerow(names)
output.writerow('')