使用split函数而不使用split()字符串方法。几乎

时间:2017-06-10 05:44:41

标签: python for-loop split

我试图复制.split()字符串方法。它运作良好,但它不包括最后一个字。

def stringSplitter(string):
    words = []
    current_word = ""
    for x in range(len(string)): #problem is here
        if string[x] == " ":
            words.append(current_word)
            current_word = ""
        else:
            current_word += string[x]
    return words

测试1:当句子=我喜欢骑自行车时,我的代码错误输出:

['I', 'like', 'to', 'ride', 'my']

我想要的结果是:

['I', 'like', 'to', 'ride', 'my', 'bicycle']

3 个答案:

答案 0 :(得分:3)

在从函数返回之前添加words.append(current_word)。那是你“迷失”的词。此外,无需使用range或任何索引。 for x in string:直接遍历字符。

答案 1 :(得分:1)

注意这可以使用生成器函数更简洁地实现 - 如果你不介意偏离“真正的”str.split()函数实现一点点:

>>> def split(string, delimiter=' '):
    current_word = ''
    for char in string:
        if char == delimiter:
            yield current_word
            current_word = ''
        else:
            current_word += char
    yield current_word


>>> list(split('I like to ride my bicycle'))
['I', 'like', 'to', 'ride', 'my', 'bicycle']
>>> 

你甚至可以修改它以允许返回分隔符:

>>> def split(string, delimiter=' ', save_delimiter=False):
    current_word = ''
    for char in string:
        if char == delimiter:
            yield current_word
            if save_delimiter:
                yield char
            current_word = ''
        else:
            current_word += char
    yield current_word


>>> list(split('I like to ride my bicycle', save_delimiter=True))
['I', ' ', 'like', ' ', 'to', ' ', 'ride', ' ', 'my', ' ', 'bicycle']
>>> 

答案 2 :(得分:0)

我在@DYZ的第一个答案的帮助下得到了它。谢谢!显然,我正在跳过最后一个字,因为我需要在返回之前添加(下面)。

x

我的代码:

n = 2