更好的分割字符串方法 -​​ 由多个字符分割

时间:2016-12-27 15:32:01

标签: python python-2.7 split

内置<string>.split()过程仅使用空格来分割字符串。

我想定义一个过程split_string,它接受两个输入:要拆分的字符串和一个包含所有被视为分隔符的字符的字符串。

该过程应该返回一个字符串列表,这些字符串会破坏列表中字符的源字符串。

def split_string(source,list):
    ...

>>> print split_string("This is a test-of the,string separation-code!",",!-")
['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code']

2 个答案:

答案 0 :(得分:1)

re.split()有效:

>>> import re
>>> s = "This is a test-of the,string separation-code!"
>>> re.split(r'[ \-\,!]+', s)

['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code', '']

在你的情况下,搜索单词似乎更有用:

>>> re.findall(r'[\w']+', s)
['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code']

答案 1 :(得分:1)

这是一个可以重复使用的功能 - 它也可以逃避特殊字符:

def escape_char(char):
    special = ['.', '^', '$', '*', '+', '?', '\\', '[', ']', '|']
    return '\\{}'.format(char) if char in special else char

def split(text, *delimiters):
    return re.split('|'.join([escape_char(x) for x in delimiters]), text)

它不会自动删除空条目,例如:

>>> split('Python, is awesome!', '!', ',', ' ')
['Python', '', 'is', 'awesome', '']