Ste*_*ski 13
特定
s = '@#24A-09=wes()&8973o**_##me' # contains letters 'Awesome'
Run Code Online (Sandbox Code Playgroud)
您可以使用生成器表达式过滤掉非字母字符:
result = ''.join(c for c in s if c.isalpha())
Run Code Online (Sandbox Code Playgroud)
或过滤filter:
result = ''.join(filter(str.isalpha, s))
Run Code Online (Sandbox Code Playgroud)
或者您可以使用re.sub以下空格替换非alpha的空格:
import re
result = re.sub(r'[^A-Za-z]', '', s)
Run Code Online (Sandbox Code Playgroud)
使用 RegExes 的解决方案在这里非常简单:
import re
newstring = re.sub(r"[^a-zA-Z]+", "", string)
Run Code Online (Sandbox Code Playgroud)
string你的字符串在哪里,newstring是没有非字母字符的字符串。其作用是将每个非字母字符替换为空字符串,从而将其删除。但请注意,正则表达式在这里可能有点过大了。
更实用的方法是:
newstring = "".join(filter(str.isalpha, string))
Run Code Online (Sandbox Code Playgroud)
不幸的是,你不能只调用str一个filter对象将其转换为字符串,这看起来会更好......
采用Pythonic方式
newstring = "".join(c for c in string if c.isalpha())
Run Code Online (Sandbox Code Playgroud)