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