Получение многократной ошибки повторения при использовании re.search - PullRequest
0 голосов
/ 06 мая 2020

У меня куча писем в файлах .txt. Я хочу заменить тему письма в теле письма. Просто контекст темы.

Например: Тема: Re: Кто ты делаешь? , Я ожидаю эту тему: Re:.

Я перебрал все файлы .txt и сохранил тему каждого письма в таком списке.

subject list = ['DID ОН ДЕЙСТВИТЕЛЬНО ВОССТАНОВЛЕН ??? ',' Q: Поменять значки навсегда ??? ',' The doctrine of Original Sin 'et c .....]

Для удаления темы из текста файлы, которые я написал этот код: обратите внимание, это только часть кода: subject_line = фактический subject из subject list выше Я упомянул например: DID HE REALLY RISE??? или Q: Change icons forever???

subject = Это актуально из текстового файла. Я хочу выполнить поиск subject_line в каждой строке текстового файла и заменить его пустым пространством ''

    for subject in file_opened:
      if not bool(re.search(subject_line,subject)):
        file_copy.write(subject)

      if bool(re.search(subject_line,subject)):
        subject = re.sub(subject_line,'',subject)
        file_copy.write(subject)

Но я получаю эту ошибку error: multiple repeat at position 20. Я новичок в регулярных выражениях. Я уверен, что мне не хватает квантификатора шаблона или чего-то в этом роде.

Пожалуйста, помогите мне с этим. Спасибо

1 Ответ

1 голос
/ 06 мая 2020

Попробуйте экранировать строку темы:

for subject in file_opened:
  if not bool(re.search(re.escape(subject_line), subject)):
    file_copy.write(subject)

  if bool(re.search(subject_line, subject)):
    subject = re.sub(re.escape(subject_line), '', subject)
    file_copy.write(subject)

Возникла проблема с использованием следующего текста в качестве прямого шаблона регулярного выражения:

DID HE REALLY RISE???

Проблема в том, что ? является регулярное выражение метасимвол и имеет особое значение. Если вы хотите найти этот буквальный текст, вы должны использовать:

DID HE REALLY RISE\?\?\?

Функция re.escape() обрабатывает это экранирование регулярного выражения за вас.

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