将字符串拆分为分隔符

时间:2014-10-26 01:46:00

标签: python

有人可以告诉我如何解决这个问题吗?在最后一个分隔符之后,代码停止并且没有到达原始字符串的末尾

def split_on_separators(original, separators):
    """ (str, str) -> list of str

    Return a list of non-empty, non-blank strings from original,
    determined by splitting original on any of the separators.
    separators is a string of single-character separators.

    >>> split_on_separators("Hooray! Finally, we're done.", "!,")
    ['Hooray', ' Finally', " we're done."]
    """

    result = []
    newstring=''
    for char in original:
        if char in separators:
            result.append(newstring)
            newstring = ""

        else:
            newstring += char
    return result

3 个答案:

答案 0 :(得分:1)

import re
def split_on_separators(original, separators):
    return re.split("[" + separators + "]", original)

好吧,这并不完美,因为某些字符不能出现在separators中,因为它用于构建正则表达式,但它适用于许多情况,包括问题中的那个。一种更强大的方法是首先简单地使用re.split而不是此函数。

答案 1 :(得分:0)

一旦循环完成/返回之前,您需要将newstring附加到结果。由于在最后一个字符串之后没有分隔符,否则它将永远不会被添加,因为只有遇到分隔符会导致列表附加。

答案 2 :(得分:0)

代码仅在输入分隔符时将输入字符串的一部分放在result中。由于您的样本输入结尾没有分隔符,因此我们已经完成了#34; newstring中的result未附加到newstring。要解决此问题,您可以在for之后添加if语句,以查看{{1}}中是否有某些内容,然后在必要时附加它。