2013-05-13 3 views

ответ

1

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

string2 = string1.translate(None, ";.,:") 

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

string2 = filter(lambda x: x not in ";,.:", string1) 

Следует отметить, что обе эти опции работают только для не- Строки Unicode и только в Python 2.

+0

Это лучше/хуже, чем при использовании re? –

+0

@JohnSmith: Я подозреваю, что этот способ более эффективен, чем при использовании регулярных выражений, но не цитируйте меня на этом. – jwodder

+0

@ Джон Смит: лучше/хуже по отношению к чему? возможно, вы должны отредактировать свой вопрос, указав свои полные требования. – carlosdc

1

Вы можете использовать re.sub для соответствия шаблону и замены. Ниже заменяет h и i только с пустыми строками:

In [1]: s = 'byehibyehbyei' 

In [1]: re.sub('[hi]', '', s) 
Out[1]: 'byebyebye' 

Не забудьте import re.

1
>>> import re 
>>> foo = "asdf;:,*_-" 
>>> re.sub('[;:,*_-]', '', foo) 
'asdf' 
  • [;:,*_-] - Список символов, которые будут соответствовать
  • '' - Заменить матч ничего
  • Используя строку foo.

Для получения дополнительной информации просмотрите re.sub(pattern, repl, string, count=0, flags=0) documentation.

0

Не знаю о скорости, но вот еще один пример без использования re.

commas_and_stuff = ",+;:" 
words = "words; and stuff!!!!" 
cleaned_words = "".join(c for c in words if c not in commas_and_stuff) 

дает вам:

'слова и вещи !!!!'

Смежные вопросы