Как не написать строку, если она имеет разную длину в Python - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь объединить файлы 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 голосов
/ 04 июня 2018

Было бы лучше, если бы вы использовали библиотеку 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() автоматически вставит запятые обратно при записи каждой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...