首页 > 解决方案 > 使用 while 循环遍历一系列以将字符添加到字符串。循环永远不会在完整数据上中断。我能做些什么?

问题描述

我创建了一个函数,它遍历具有两个不同确切长度的字符串列。将我的数据子集为 100 时,我没有问题,但是当我在 ~230K 的完整数据上运行该函数时,while 循环永远不会中断。下面是函数:

def add_dash(df):
    n = 0
    results = []
    while n <= len(df[:-1]):
        if len(df[n]) == 7:
            results.append(df[n][:3] + '-' + df[n][3:])
            n += 1
        elif len(df[n]) == 13:
            results.append(df[n][:4] + '-' + df[n][4:6] + '-' + df[n][6:9] + '-' + df[n][9:])
            n += 1
        else:
            pass
    return(results)

因为我在较小的集合上测试过它,所以我想不出为什么循环不会在更大的集合上结束。任何见解将不胜感激!

标签: pythonpython-2.7while-loop

解决方案


试试下面的代码,

def add_dash(df): 
    n = 0 
    results = [] 
    while n <= len(df[:-1]): 
        if len(df[n]) == 7:       
            results.append(df[n][:3] + '-' + df[n][3:])
        elif len(df[n]) == 13:
            results.append(df[n][:4] + '-' + df[n][4:6] + '-' + df[n][6:9] + '-' + df[n][9:]) 
        else:
            results.append('')
        n+=1
    return(results)

推荐阅读