在分隔符上拆分字符串

2024-04-26 21:48:16 发布

您现在位置: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

Tags: ofreonresultlistwesplitnon
3条回答
import re
def split_on_separators(original, separators):
    return re.split("[" + separators + "]", original)

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

您需要在循环完成后/返回前向result追加newstring。因为最后一个字符串后面没有分隔符,所以它将永远不会被添加,因为只有遇到分隔符才会导致列表的附加。你知道吗

当输入字符串碰到分隔符时,代码仅将其一部分放入result。由于在示例输入的末尾没有分隔符,newstring中的“we're done”不会附加到result。要解决这个问题,您必须在for后面添加if语句,以查看newstring中是否有内容,然后在必要时追加它。你知道吗

相关问题 更多 >