Python - удаление переменных из текстовых данных с помощью регулярных выражений - PullRequest
0 голосов
/ 13 ноября 2018

Я использую Python.Я хочу удалить строку файла, содержащую переменные (input_numb), которые пользователь может вставить.

 input_numb = ['13', '04'] ## These are variable (depending on what the user puts in)

Переменные должны быть удалены только в том случае, если они записаны без какого-либо другого текста в строке.Если есть какой-либо текст до или после него, они не должны быть удалены.Я попытался сделать это с помощью регулярного выражения ниже (строка), но оно все равно возвращает все 13 и 04.

line = line.replace('\^'+input_numb+'\$', '')

Вот пример данных:

13
Some text is good.
The text has 13 lines
13 is a nice number.

13
Some text.
Some more text 04.

04.
Some text.

Выходные данныекоторый:

Some text is good.
The text has 13 lines
13 is a nice number.

Some text.
Some more text 04.

Some text.

1 Ответ

0 голосов
/ 13 ноября 2018

Я предлагаю опустить все строки, которые полностью соответствуют элементам списка input_numb.

Скомпилируйте следующее регулярное выражение:

rx = re.compile(r'^(?:{})$'.format("|".join(input_numb)))

И затем проверьте каждую строку на соответствие шаблону, и еслисовпадений нет, напишите строку в новый файл, иначе ничего не делайте:

if not rx.search(line):
    fw.write(line)  # where fw is the file handle where output is written

См. Демо Python онлайн .

В некоторых случаях выВозможно, вы захотите убрать строку из конечного пробела, if not rx.search(line.rstrip()):.

...