我有一个字符串,我想用一个星号替换任何非标准字符或数字的字符,如(az或0-9).例如,"h ^&ell`.,| ow] {+ orld"被替换为"h*ell*o*w*orld".请注意,多个字符(如"^&")将替换为一个星号.我该怎么做呢?
nne*_*neo 155
正规救援!
import re
s = re.sub('[^0-9a-zA-Z]+', '*', s)
Run Code Online (Sandbox Code Playgroud)
例:
>>> re.sub('[^0-9a-zA-Z]+', '*', 'h^&ell`.,|o w]{+orld')
'h*ell*o*w*orld'
Run Code Online (Sandbox Code Playgroud)
小智 33
pythonic的方式.
print "".join([ c if c.isalnum() else "*" for c in s ])
Run Code Online (Sandbox Code Playgroud)
这并不涉及对多个连续的非匹配字符进行分组,即
"h^&i => "h**i不像"h*i"正则表达式解决方案那样.
psu*_*sun 10
使用\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'
Run Code Online (Sandbox Code Playgroud)
更新:此解决方案也将排除下划线.如果您只想排除字母和数字,那么nneonneo的解决方案更合适.
尝试:
s = filter(str.isalnum, s)
Run Code Online (Sandbox Code Playgroud)
编辑:意识到OP想要用'*'替换非chars.我的回答不合适
| 归档时间: |
|
| 查看次数: |
92771 次 |
| 最近记录: |