朋友们!我有一个巨大的 csv 文件,我需要提取带有标题的行,其中名为“data.status”的列等于“完整”,然后从中删除空列并写入另一个 csv 文件。我可以用 grep | 实现它吗? sed | awk ?感谢您的解答!
编辑 1. 我通过展平大约 60 000 个 json 文件并将它们中的数据写入一个 csv 来创建此 csv。我真的不知道标头的实际数量,我什至无法打开它(csv 文件的大小约为 1.5 GB)。但它有很多空白字段,我想删除它们并使其更具可读性。作为一个例子,我有 csv:
日期.状态、日期.开始、日期.结束、日期.项目
不成功 , 21-03-15, 25-03-15, some_item
完成,,,,第2项
输出应如下所示:
日期.状态、日期.项目
完成,项目2
答案1
您可以使用 grep/sed/awk 进行 hack,但实现 CSV 解析器并不简单,因此我只建议使用它们进行快速 hack(例如,您必须考虑各种特殊的转义/引用场景) 。
如果你想这样做,我建议使用一个真正的、成熟的 CSV 解析器,比如 Python stdlib 中提供的解析器:
import csv
with open('your.csv') as csvfile:
reader = csv.DictReader(csvfile)
kept_rows = (row for row in reader if row['data.status'] == 'complete')
然后您可以使用 a 写出新行DictWriter
。