Заменить все не буквенно-цифровые символы в строке
У меня есть строка, с которой я хочу заменить любой символ, который не является стандартным символом или числом, таким как (a-z или 0-9) со звездочкой. Например, " h^&ell`.,|о Вт]{+Ире" заменяется на "ч*елл*о*ж*мира". Обратите внимание, что несколько символов, таких как "^&" заменяются одной звездочкой. Как бы я это сделал?
4 ответа:
регулярное выражение на помощь!
import re s = re.sub('[^0-9a-zA-Z]+', '*', s)
пример:
>>> re.sub('[^0-9a-zA-Z]+', '*', 'h^&ell`.,|o w]{+orld') 'h*ell*o*w*orld'
в подходящие для Python путь.
print "".join([ c if c.isalnum() else "*" for c in s ])
Это не имеет дело с группировкой нескольких последовательных несовпадающих символов, хотя, т. е.
"h^&i => "h**i
не"h*i"
как в регулярных выражениях решений.
попробуй:
s = filter(str.isalnum, s)
изменить: понял, что ОП хочет заменить не с символов '*'. Мой ответ не подходит
использовать
\W
что эквивалентно[^a-zA-Z0-9_]
. Проверьте документацию,https://docs.python.org/2/library/re.htmlImport re s = 'h^&ell`.,|o w]{+orld' replaced_string = re.sub('\W+', '*', s) output: 'h*ell*o*w*orld'
обновление: это решение также исключит подчеркивание. Если вы хотите исключить только алфавиты и цифры, то решение nneonneo более подходит.