我正在尝试合并CSV文件,并且有一些我想删除的损坏证据。一些行与其他行的长度不同,如果是这种情况,我不想将它们写入主文件。这是我用来完成
的代码for line in rest:
if len(line.split(",")) == good_line_length or line == "\n":
processed_file_write.write(line)
else:
pass
良好的行长度是len(csv_header.split(","))
我正在尝试这个并且它吐出一个换行而不是越过线而不写任何东西。如果我将pass
替换为processed_file_write.write("DUMMY")
,则会写入“DUMMY”而不是换行符。我不知道如何让python只是跳过写行。
答案 0 :(得分:0)
如果你使用Python的CSV库来帮助解决这个问题会更好。它将读取每一行并自动为您进行拆分。然后,您可以将一行中的项目数与标题中的项目数进行比较,如下所示:
import csv
with open('input.csv', newline='') as f_input, open('output.csv', 'w', newline='') as f_output:
csv_input = csv.reader(f_input)
csv_output = csv.writer(f_output)
header = next(csv_input)
csv_output.writerow(header)
for row in csv_input:
if len(row) == len(header):
csv_output.writerow(row)
这显示了它对单个文件的作用。在编写每一行时,csv.writer()
会自动将逗号分隔符放回。