Альтернатива методу замены строки Python - PullRequest
4 голосов
/ 04 декабря 2011

Я хочу удалить некоторые слова из абзаца, такие как «и», «как» и «как».Есть ли более простой способ удалить слова из строки, чем сделать это с помощью замены -

new_str = str.replace(' and ', '').replace(' as ', '').replace(' like ', '')

Например, существует ли метод, подобный следующему?

str.remove([' and ', ' like ', ' as '])

Ответы [ 4 ]

8 голосов
/ 04 декабря 2011

Да, вы можете использовать функцию sub из модуля re:

>>> import re
>>> s = 'I like this as much as that'
>>> re.sub('and|as|like', '', s)
'I  this  much  that'
1 голос
/ 29 апреля 2013

Обратите внимание, что если все, что вас волнует, это удобочитаемость и не обязательно производительность, вы можете сделать что-то вроде этого:

new_str = str
for word_to_remove in [' and ', ' as ', ' like ']:
    new_str = new_str.replace(word_to_remove, '')
1 голос
/ 04 декабря 2011

Вы также можете обойтись без регулярных выражений. Смотрите следующий пример

def StringRemove(st,lst):
    return ' '.join(x for x in st.split(' ') if x not in lst)

>>> StringRemove("Python string Java is immutable, unlike C or C++ that would give you a performance benefit. So you can't change them in-place",['like', 'as', 'and'])
"Python string Java is immutable, unlike C or C++ that would give you a performance benefit. So you can't change them in-place"

>>> st="Python string Java is immutable,     unlike C or C++ that would  give you a performance benefit. So you can't change them in-place"
>>> StringRemove(st,['like', 'as', 'and'])==st
True
>>> 
1 голос
/ 04 декабря 2011

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

    >>> import re
    >>> test = "I like many words but replace some occasionally"
    >>> to_substitute = "many|words|occasionally"
    >>> re.sub(to_substitute, '', test)
    'I like   but replace some '
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...