Удалить выборочные строки из файла по символу

470 просмотра
0
0 Комментариев

Всем здравствуйте, задача состоит в том чтобы либо удалить все строки либо их вообще не считывать.

Есть определенные категории в которых есть ненужные нам строки, как реализовать так чтобы допустим категория «invit» в ней данные «D», «F», «I», «Q», «B», нужно удалить строки с данными «Q» или не считывать строки в данной категории с данными строками.

Ситуация складывается так что при удалении всех строк с Q выходной файл получается не правильный. Как не брать эту строку для дальнейших манипуляций


Добавить комментарий

2 Answers

Python Опубликовано 09.12.2018
0

# если файл вида
'''
[TEST]
Q2=http://handler/
[invit]
A=[123]
D=https:/
F=http://
 ...
'''
 
import configparser
 
def get_ini_data(file):
    parser = configparser.ConfigParser()
    parser.read(file)
 
    for category in parser.sections():
        for var in parser.options(category):
            if not (category == 'invit' and var in ["d", "f", "i", "q", "b"]):
                data = parser.get(category, var)
                yield category, var, data
 
for category, var, data in get_ini_data('test.ini'):
    print(category, var, data)

Добавить комментарий
0

Самый простой вариант — проверять каждую строку на соответствие определённому регулярному выражению. В зависимости от результата: сохранять эту строку в выходном файле или нет.

Пример кода (все строки входного файла, начинающиеся с символа Q будут исключены):

import re
import os
 
pattern = re.compile(r"^Q.*")
 
fin  = open(input_filename)
fout = open(output_filename, "w")
 
for line in fin.readlines():
      if not pattern.match(line):
              fout.write(line)
 
fin.close()
fout.close()
 
os.rename(output_filename, input_filename)

Вам оставляю составить подходящее регулярное выражение, обработать исключительные ситуации, по необходимости оптимизировать чтение/запись.

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up