2008-12-17 75 views
11

我想使用一個或多個分隔符分割字符串。在多個不同的字符上分割字符串

E.g. 「a b.c」,拆分「」和「。」會給出清單[「a」,「b」,「c」]。

目前,我看不到標準庫中的任何東西來做到這一點,而我自己的嘗試有點笨拙。例如。

def my_split(string, split_chars): 
    if isinstance(string_L, basestring): 
     string_L = [string_L] 
    try: 
     split_char = split_chars[0] 
    except IndexError: 
     return string_L 

    res = [] 
    for s in string_L: 
     res.extend(s.split(split_char)) 
    return my_split(res, split_chars[1:]) 

print my_split("a b.c", [' ', '.']) 

太可怕了!有更好的建議嗎?

+0

是 「A BC」(一個空間B C點)?你有更多的樣本輸入? – OscarRyz 2008-12-17 02:10:37

+0

是的。我已經更新了這個問題,以便更清楚一點 – 2008-12-17 02:19:14

回答

37
>>> import re 
>>> re.split('[ .]', 'a b.c') 
['a', 'b', 'c'] 
2

這一個用列表中的第一個分隔符替換所有分隔符,然後使用該字符「分割」。

def split(string, divs): 
    for d in divs[1:]: 
     string = string.replace(d, divs[0]) 
    return string.split(divs[0]) 

輸出:

>>> split("a b.c", " .") 
['a', 'b', 'c'] 

>>> split("a b.c", ".") 
['a b', 'c'] 

我做這樣的 '重',雖然解決方案。

1

不是特別快,但這項工作:

def my_split(text, seps): 
    for sep in seps: 
    text = text.replace(sep, seps[0]) 
    return text.split(seps[0])