2008-12-17 43 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])