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'