replacestring中的所有非字母数字字符
我有一个string,我想用一个星号代替任何不是标准字符或数字的字符,如(az或0-9)。 例如,“h ^&ell`,| ow] {+ orld”被replace为“h * ell * o * w * orld”。 请注意,诸如“^&”之类的多个字符会被replace为一个星号。 我怎么去做这个?
正则expression式来拯救!
import re s = re.sub('[^0-9a-zA-Z]+', '*', s)
例:
>>> re.sub('[^0-9a-zA-Z]+', '*', 'h^&ell`.,|ow]{+orld') 'h*ell*o*w*orld'
pythonic的方式。
print "".join([ c if c.isalnum() else "*" for c in s ])
虽然这不处理多个不匹配的字符。
尝试:
s = filter(str.isalnum, s)
编辑:意识到OP要用'*'replace非字符。 我的答案不适合
使用\W
,其中包括所有非字母数字[a-zA-Z0-9]。 检查文档, https://docs.python.org/2/library/re.html
Import re replaced_string = re.sub('\W+', '*', 'h^&ell`.,|ow]{+orld') output: 'h*ell*o*w*orld'