regex删除保留空格的非alpha字符



我已经写了一个简单的函数,它删除字符串中的所有非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* -见上文。

最新更新