1

[下面问题的代码]

这个想法是扩展 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
4

1 回答 1

4

因为您的代码没有任何代码可以从最后一个逗号附加到字符串末尾。

end_pos = source.find(char, start)
output.append(source[start_pos:end_pos])

您最终需要在最后一个逗号和字符串长度之间附加一个范围。

在循环结束后添加以下内容。

output.append(source[end_pos+1:];

修改代码:http: //ideone.com/9Khu4g

于 2013-10-28T23:13:52.207 回答