我有一个字符串,我希望用星号替换任何不是标准字符或数字的字符,如(a-z或0-9)。例如,“h^& ell”,| o w] {+ orld“被替换为”h * ell * o * w * orld“。请注意,诸如“^ &”之类的多个字符将被替换为一个星号。我会如何去做这件事?替换字符串中的所有非字母数字字符
48
A
回答
99
正则表达式来拯救!
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'
+5
如果你处理unicode很多,你可能还需要保留所有非ASCII unicode符号:'re.sub(“[\ x00- \ x2F \ x3A- \ x40 \ x5B- \ x60 \ x7B- \ x7F] +“,”“,”:%#unicodeΣΘΙП@。/ \ n“)' – zhazha
+0
如果您想在字符串中保留空格,只需在括号内添加空格:s = re .sub('[^ 0-9a-zA-Z] +','*',s) – stackPusher
23
的Python的方式。
print "".join([ c if c.isalnum() else "*" for c in s ])
这不涉及虽然分组多个连续不匹配的字符,即
"h^&i => "h**i
不"h*i"
在正则表达式的解决方案。
6
尝试:
s = filter(str.isalnum, s)
编辑: 意识到OP想更换非字符用 '*'。我的回答不适合
5
使用\W
其中包括所有非字母数字[a-zA-Z0-9]。检查的文件,https://docs.python.org/2/library/re.html
Import re
replaced_string = re.sub('\W+', '*', 'h^&ell`.,|o w]{+orld')
output: 'h*ell*o*w*orld'
相关问题
- 1. 用空字符串替换非字母数字字符MYSQL
- 2. 替换字符串中的所有非字母表
- 3. 替换非字母数字字符的所有组合
- 4. 替换字符串中的非字母字符
- 5. 替换utf8中的所有非单词字符字符串
- 6. 从字符串中删除所有非字母,非数字字符?
- 7. 替换除字符串以外的字符串中的所有字母数字字符
- 8. 替换字符串中的所有字符不同的字符
- 9. 用所有字母字符替换字符串中的所有字符的函数Haskell
- 10. 字符串中的字母替换
- 11. 替换字符串中的字母
- 12. Python - 替换字符串中的字母?
- 13. 将MSSQL中的所有非数字字符替换为空字符串
- 14. 如果字符串中的字母替换为字符串中的字母
- 15. 所有非字母数字字符串除外的java字符串
- 16. Python - 查找字符串中的所有非字母数字字符
- 17. SQL - 替换字符串中的非数字字符
- 18. 替换非数字字符
- 19. 在JavaScript中,如何用单个字符替换字符串的所有字母?
- 20. 用空字符串替换非数字
- 21. 从lua字符串中删除所有非字母数字字符
- 22. Javascript - 替换除期间以外的所有非字母数字字符
- 23. PHP的preg_replace(从字符串替换除了字母,数字,和几个字符的所有字符)
- 24. 只替换字符串中的字母字符
- 25. 用字符替换字符串中的字母
- 26. 如何将字符串的所有非字母数字字符转换为连字符?
- 27. 在Oracle中替换非字母数字字符
- 28. 用T-SQL中的字符和数字替换字符串中的字母
- 29. 字符串与非字母
- 30. 如何以字母顺序替换字符串中的字母
[Python中的字符串中剥离一切,但字母数字字符(可能的重复http://stackoverflow.com/questions/1276764/stripping-everything-but-alphanumeric-chars-from -a-string-in-python) – sds