Удаление большого списка строк из текста - PullRequest
0 голосов
/ 10 декабря 2018

Предположим, что

txt='Daniel Johnson and Ana Hickman are friends. They know each other for a long time. Daniel Johnson is a professor and Ana Hickman is writer.'

- это большой фрагмент текста, и я хочу удалить большой список строк, таких как

removalLists=['Daniel Johnson','Ana Hickman']

из них.Я имею в виду, что я хочу заменить все элементы в списке на

' '

Я знаю, что я могу сделать это легко, используя цикл для таких как

for string in removalLists:
    txt=re.sub(string,' ',txt)

Интересно, смогу ли ясделай это быстрее.

1 Ответ

0 голосов
/ 10 декабря 2018

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

\bDaniel Johnson\b|\bAna Hickman\b

Чтобы сгенерировать это, мы можем сначала обернуть каждый термин границами слова (\b).Затем сверните список в одну строку, используя | в качестве разделителя.Наконец, мы можем использовать re.sub для замены всех вхождений любого термина одним пробелом.

txt = 'Daniel Johnson and Ana Hickman are friends. They know each other for a long time. Daniel Johnson is a professor and Ana Hickman is writer.'
removalLists = ['Daniel Johnson','Ana Hickman']

regex = '|'.join([r'\b' + s + r'\b' for s in removalLists])
output = re.sub(regex, " ", txt)

print(output)

  and   are friends. They know each other for a long time.   is a professor and   is writer.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...