python中的迭代问题

时间:2013-10-28 23:09:35

标签: python for-loop split iteration

[以下问题代码]

我们的想法是扩展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

1 个答案:

答案 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