2016-10-18 89 views
1

我已經寫了一個簡單的函數,用於剝離所有非alpha字符的字符串,以保留空格。註冊前請刪除保留空格的非字母字符

目前它依賴於使用兩個正則表達式。不過,爲了簡潔起見,我想將這兩個章節縮減爲一個。這可能嗎?

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

您可以封閉[^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* - 請參閱上文。
相關問題