我已经写了一个简单的函数,它删除字符串中的所有非alpha字符,并保留空格。
目前依赖于使用两个正则表达式。然而,为了简洁起见,我想将这两个reg简化为一个。这可能吗?
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
您可以将[^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? {[]}")
查看在线Python演示
模式细节:
-
s*
-零或多个空白 -
[^A-Za-z]+
- 1个或多个ASCII字母以外的字符 -
s*
-见上文。