回答:
救済への正規表現!
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'
re.sub("[\x00-\x2F\x3A-\x40\x5B-\x60\x7B-\x7F]+", " ", ":%# unicode ΣΘΙП@./\n")
import re; regex = re.compile('[^0-9a-zA-Z]+'); regex.sub('*', 'h^&ell.,|o w]{+orld')
\W、単語以外の文字についても注意してください。ほとんど同じですが、アンダースコアを単語文字として使用できます(理由は不明です):docs.python.org/3.6/library/re.html#index-32
\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による解決策がより適切です。
\W同等であることに[^a-zA-Z0-9_]注意してください。Python 3.xでは、/ フラグが使用されている場合\W+に[^a-zA-Z0-9_]のみ同等です。re.ASCIIre.A