Python 创建了一个拆分函数,但它';It’没有按预期工作

Python 创建了一个拆分函数,但它';It’没有按预期工作,python,python-3.x,Python,Python 3.x,作为一个实践问题,我创建了一个split函数,它的作用与str.split()基本相同。然而,对于我的第一个测试值,似乎最后一个单词被忽略了,没有被添加到列表中。我理解这是因为没有要比较的“end”字符,所以它跳过了if语句,而没有添加单词 我想知道是否有人可以看一下并帮助改进代码,这样就可以在if语句之外添加这个词,这样它就不会忽略结束词 def split(string): words = [] char_to_split = [' ', '\n', '\t'] wo

作为一个实践问题,我创建了一个split函数,它的作用与
str.split()
基本相同。然而,对于我的第一个测试值,似乎最后一个单词被忽略了,没有被添加到列表中。我理解这是因为没有要比较的“end”字符,所以它跳过了if语句,而没有添加单词

我想知道是否有人可以看一下并帮助改进代码,这样就可以在if语句之外添加这个词,这样它就不会忽略结束词

def split(string):
    words = []
    char_to_split = [' ', '\n', '\t']
    word = ""
    for ch in string:
        if ch in char_to_split:
            if word != "":
                words.append(word)
                word = ""
        else:
            word += ch
    if len(words) != 0:
        return words
    else:
        return None

if __name__ == "__main__":
    print(split('duff_beer 4.00'))
    print(split('a b c\n'))
    print(split('\tx   y \n  z '))
    print(split(''))
我想加一句话:

if word not in words:
       words.append(word)

在我返回列表之前。但是,问题是如果我有一个重复同一单词的字符串。

你的问题是,如果字符串末尾没有拆分的字符,那么单词中已有的内容就不会添加到单词中

如果单词不是空的,则在末尾追加单词

Edit:kindall指出它对只有一个单词的字符串不起作用,所以我将条件移到了
if len(words)!=0

def split(string):
    words = []
    char_to_split = [' ', '\n', '\t']
    word = ""
    for ch in string:
        if ch in char_to_split:
            if word != "":
                words.append(word)
                word = ""
        else:
            word += ch
    if word: words.append(word) # add this
    if len(words) != 0:
        return words
    else:
        return None

print(split('duff_beer 4.00'))
>>> ['duff_beer', '4.00']

编辑感谢@k

我更愿意只做
拆分
,不带任何参数,因为默认值为
,这样就可以在
'
'\n'
'\t'
上拆分了:

s='hello blah\t\nBlahFooBar'
print(s.split())
输出:

['hello', 'blah', 'BlahFooBar']

这就更重要了,比如(
,`'\n')等等。

很乐意帮助:)如果只有一个单词,那就不起作用了,因为
len(words)
在那一点上是0。谢谢你指出这一点。我没有想到那个特殊的情景。