[以下问题代码]
我们的想法是扩展python的内置split()函数。此函数需要两个字符串,一个需要拆分,第二个是在第一个字符串中省略和拆分的字符。这段代码有效,但出于某种原因,这个输入,它不会迭代过去逗号后的任何内容。换句话说,无论以这种格式输入,它都不会附加任何超出最终逗号的内容。我无法弄清楚为什么。我已经排除了这段代码的行,我无法找到我失去它的地方。
为什么我的代码没有迭代过去逗号后面的任何字符?
def split_string(source,splitlist):
## Variables ##
output = []
start, start_pos , tracker = 0 , 0 , 0
## Iterations ##
for char in source:
start = source.find(char,start)
if char in splitlist:
tracker += 1
if tracker <= 1:
end_pos = source.find(char, start)
output.append(source[start_pos:end_pos])
start_pos = end_pos + 1
else:
start_pos+=1
else:
tracker = 0
return output
out = split_string("First Name,Last Name,Street Address,City,State,Zip Code",",")
print out
答案 0 :(得分:4)
因为您的代码没有任何代码可以从最后一个逗号追加到字符串结尾。
end_pos = source.find(char, start)
output.append(source[start_pos:end_pos])
您需要最后在最后一个逗号和字符串长度之间追加一个范围。
循环结束后添加以下内容。
output.append(source[end_pos+1:];
修改后的代码: http://ideone.com/9Khu4g