python3: удаление нескольких символов из строки с длинной цепочкой .replace (). replace (). replace () - PullRequest
0 голосов
/ 02 июня 2010

Я нашел этот пример при переполнении стека. Я понимаю это, но мне кажется, что для такой простой концепции метода это немного ... удаление нескольких символов из строки.

import string
exclude = set(string.punctuation)
s = ''.join(ch for ch in s if ch not in exclude)

есть ли встроенный строковый метод в Python 3.1, чтобы сделать что-то для мелодии:

s = "a,b,c,d,e,f,g,h,i"
s = s.strip([",", "d", "h"])

вместо:

s = s.replace(",", "").replace("d", "").replace("h", "")

1 Ответ

2 голосов
/ 02 июня 2010

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

s = ''.join(ch for ch in s if ch not in ",dh")

, что мне кажется довольно лаконичным. Однако есть альтернатива, которая немного более краткая и может быть более эффективной:

s = s.translate(str.maketrans("", "", ",dh"))

Отказ от ответственности: я на самом деле не тестировал этот код, поскольку у меня нет доступа к интерпретатору Python 3.1. Эквивалент в Python 2.6 (который я протестировал):

t = ''.join(chr(i) for i in range(256))
s = s.translate(t, ",dh")
...