Reg ex删除保留空格的非字母字符

时间:2016-10-18 09:52:51

标签: python regex string python-2.7

我编写了一个简单的函数,用于删除所有非字母字符串,并保留空格。

目前它依赖于使用两个正则表达式。但是,为了简洁起见,我希望将这两个注册表减少为一个。这可能吗?

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

1 个答案:

答案 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? {[]}")

请参阅online Python demo

模式细节:

  • \s* - 零个或多个空格
  • [^A-Za-z]+ - 除ASCII字母以外的1个或多个字符
  • \s* - 见上文。