我有一個字符串,我希望用星號替換任何不是標準字符或數字的字符,如(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