Замена нескольких значений в строке - Python - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть строка с именем 'I have a string' и список ['I', 'string'].Если мне нужно удалить все элементы в списке из данной строки, правильный цикл for работает нормально.Но когда я пытаюсь сделать то же самое со списком, он работает не так, как ожидалось, но возвращает список.

my_string = 'I have a string'
replace_list = ['I', 'string']
for ele in replace_list:
    my_string = my_string.replace(ele, '')
# results --> ' have a '
[my_string.replace(ele, '') for ele in replace_list]
# results --> [' have a string', 'I have a ']

Есть ли способ сделать это более эффективно?

1 Ответ

3 голосов
/ 24 апреля 2019

Используйте регулярное выражение:

import re

to_replace = ['I', 'string']
regex = re.compile('|'.join(to_replace))

re.sub(regex, '', my_string)

Выход:

' have a '

В качестве альтернативы вы можете использовать reduce:

from functools import reduce

def bound_replace(string, old):
    return string.replace(old, '')

reduce(bound_replace, to_replace, my_string)

Выход:

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