Как заменить слово, только если после него стоит пробел? - PullRequest
0 голосов
/ 04 августа 2020

Я хочу заменить слово bacteria в этом предложении

'List all the bacteria whose <http://bacteria> is bacillus ?'

Когда я использую text.replace('bacteria','<e0>'), он заменяет также bacteria in <http://bacteria>, который мне не нужен и строка становится 'List all the <e0> whose <http://<e0>> is bacillus ?'

Как этого избежать?

Ответы [ 3 ]

2 голосов
/ 04 августа 2020

вы также можете использовать регулярное выражение для этого довольно легко ... если вы хотите также заменить say "hello bacteria.", вы можете просто включить \. в свой список символов lookbehind / lookahead

re.sub("(?<=[\. ^])bacteria(?=[\. $])","",target_string)

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

1 голос
/ 04 августа 2020

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

  1. Python Встроенный replace позволяет вам указать количество замен, которые необходимо сделать. пример: text.replace('bacteria', '<e0>', 1), если вы знаете, что тот, который вы хотите заменить, будет первым.
  2. Вы можете использовать text.replace(' bacteria ', ' <e0> ') или что-то подобное, если вы хотите заменить только экземпляры, окруженные пробелами.
1 голос
/ 04 августа 2020

Вот возможное решение:

text = 'List all the bacteria whose http://bacteria is bacillus ?'
new_text = ' '.join(word if word != 'bacteria' else '<e0>'
                    for word in text.split(' '))

Вот значение new_text:

'List all the <e0> whose http://bacteria is bacillus ?'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...