Я очищаю некоторые данные для анализа текста, извлеченные из PDF-файлов.Я заметил, что одной из ошибок является странный пробел в словах, заканчивающихся на «у».В частности, окончание y отрывается от слова пробелом: theor y
.Я пытаюсь использовать re.sub
, чтобы идентифицировать эти экземпляры, а затем свернуть пространство.
Мне удалось написать хорошую строку регулярного выражения (см. https://regex101.com/r/M1jpe6/5),, но я не получаю ожидаемых результатов. Я подозреваю, что что-то упустил из-заre.sub
метод.
Вот мой игрушечный код.
import re
string = 'this is my theor y of dance'
regex_y = r'\b\w*\b(\sy)\b'
new_string = re.sub(regex_y, 'y', string)
print(new_string)
Что я ожидаю напечатать из вышеприведенного:
this is my theory of dance
но на самом деле он печатает
this is my y of dance
Поскольку единственная группа захвата в моем регулярном выражении - (\sy)
, я ожидаю заменить y
на y
. Вместо этого этоЯсно, что я сопоставляю строку большего размера theor y
, а затем заменяю все это на y
.
Почему это происходит, когда я только захватываю (\sy)
? Как мне написать re.sub
строка, чтобы она работала так, как я собираюсь?