Regex Python Проблемы с MS - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок в регулярных выражениях и не могу найти решение. Я искал решение за 3 часа ...

У меня есть текст

ПРИВЕТ MS. Я надеюсь, что у вас нет проблем.

И я хочу получить результат:

Здравствуйте, госпожа, я надеюсь, у вас нет проблем.

Но мой код заменяет также «MS». из проблем.

re.sub(r'(MS)+[.]', 'MISTRESS', text)

Спасибо за помощь.

Использование Python 3.5.

Ответы [ 2 ]

2 голосов
/ 14 апреля 2020

Что ж, немедленным решением здесь было бы поставить точку обзора перед MS., чтобы утверждать, что пробел предшествует:

text = "HELLO MS. I HOPE YOU HAVE NO PROBLEMS."
output = re.sub(r'(?<!\S)(MS)+[.]', 'MISTRESS', text)
print(output)

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

0 голосов
/ 14 апреля 2020

Другой способ без regex с использованием простых replace(),

dictionary = {"MR.":"MISTER", "MS.":"MISTRESS" } 
main_string = "HELLO MS. I HOPE YOU HAVE NO PROBLEMS WITH MR. X."
for key in dictionary.keys():
    main_string = main_string.replace(key, dictionary[key])
print(main_string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...