如果在Python中它具有不同的长度,如何不写一行

时间:2018-05-31 17:38:46

标签: python file csv io

我正在尝试合并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只是跳过写行。

1 个答案:

答案 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()会自动将逗号分隔符放回。