切片操作和enumerate 字符串split实现

2020-02-09  本文已影响0人  Poisson_Lee

def split(string: str, separator: str = " ") -> list:
    """
    Will split the string up into all the values separated by the separator (defaults to spaces)
    
    >>> split("apple#banana#cherry#orange",separator='#')
    ['apple', 'banana', 'cherry', 'orange']
    
    >>> split("Hello there")
    ['Hello', 'there']
    
    >>> split("11/22/63",separator = '/')
    ['11', '22', '63']
    
    >>> split("12:43:39",separator = ":")
    ['12', '43', '39']
    """

    split_words = []

    last_index = 0
    for index, char in enumerate(string):
        if char == separator:
            split_words.append(string[last_index:index])
            last_index = index + 1
        elif index + 1 == len(string):
            split_words.append(string[last_index : index + 1])
    return split_words


if __name__ == "__main__":
    from doctest import testmod

    testmod()

index从0开始计数,切片操作[last_index: index],类似于systemverilog的语法。

这个方法的split的分隔符看函数的传入参数的类型str,但根据实现,其实只支持一个字符作为分隔符,所以可以加个判断,如果len(separator)>1, raise error.

上一篇 下一篇

猜你喜欢

热点阅读