我试图复制.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']
答案 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