Я открываю текстовый файл со столбцами и строками. В некоторых строках больше символов, чем в других, и я пытаюсь удалить строки, в которых количество символов составляет <#.

Файл также содержит несколько пустых разделительных строк, которые мне нужно сохранить в файле.

with open(outfile) as f, open(outfile2,'w') as f2:
     for x in f:
           if (':') not in x and (',') not in x:
               newline=x.strip()+'\n'
               if len(newline.rstrip()) >= 43:
                   f2.write(newline)

Первый if-statement удаляет некоторые строки текста в файле, которые мне не нужны, а также добавляет те лишние разделительные строки, которые мне нужны. Вторая if-statement пытается избавиться от строк данных, содержащих <# символов, но эта команда также избавляется от тех пустых строк-разделителей, которые мне нужно сохранить. Как я могу избавиться от этих строк, содержащих <# символов, сохранив при этом разделительные строки?

1
Jonathon 25 Июл 2019 в 16:49

2 ответа

Лучший ответ

Используйте следующий консолидированный подход:

with open(outfile) as f, open(outfile2, 'w') as f2:
    for line in f:
        line = line.strip()
        if not line or (':' not in line and ',' not in line and len(line) >= 43):
            f2.write(line + '\n')

Важный оператор if позволяет писать либо пустую строку, либо строку, которая удовлетворяет требуемому условию.

1
RomanPerekhrest 25 Июл 2019 в 13:58
with open(outfile) as f, open(outfile2,'w') as f2:
     for x in f:
           if not x.strip().replace("\n",""):
              f2.write(x)
              continue
           elif (':') not in x and (',') not in x:
               newline=x.strip()+'\n'
               if len(newline.rstrip()) >= 43:
                   f2.write(newline)

Я предполагаю, что это дополнительное заявление if решит вашу проблему. Если этого не произойдет, вы можете создать вариант условного оператора, который будет.

0
Kenstars 25 Июл 2019 в 13:58