我编写了一个简单的函数,用于删除所有非字母字符串,并保留空格。
目前它依赖于使用两个正则表达式。但是,为了简洁起见,我希望将这两个注册表减少为一个。这可能吗?
import re
def junk_to_alpha(s):
reg = r"[^A-Za-z]"
p = re.compile(reg)
s = re.sub(p, " ", s)
p = re.compile(r"\s+")
s = re.sub(p, " ", s)
return s
print junk_to_alpha("Spoons! 12? \/@# ,.1 12 Yeah? {[]}")
# Spoons Yeah
答案 0 :(得分:3)
您可以将[^a-zA-Z]+
与\s*
:
import re
def junk_to_alpha(s):
s = re.sub(r"\s*[^A-Za-z]+\s*", " ", s)
return s
print junk_to_alpha("Spoons! 12? \/@# ,.1 12 Yeah? {[]}")
模式细节:
\s*
- 零个或多个空格[^A-Za-z]+
- 除ASCII字母以外的1个或多个字符\s*
- 见上文。