Python函数字符串索引超出范围 def search_Lm_in_df_two(集合,数据集): 对于集合中的元素: 对于数据集[1:]中的行: if element==行[5]:

Python函数字符串索引超出范围 def search_Lm_in_df_two(集合,数据集): 对于集合中的元素: 对于数据集[1:]中的行: if element==行[5]:,python,error-handling,Python,Error Handling,引用指向 def search_Lm_in_df_two(collection,dataset): for element in collection: for row in dataset[1:]: if element == row[5]: <-- #This is where the error is lmstring = row[6]

引用指向

def search_Lm_in_df_two(collection,dataset): 
        for element in collection:
            for row in dataset[1:]:
                if element == row[5]: <-- #This is where the error is
                    lmstring = row[6]
                    newString = {shorten_string(lmstring)}
        return newString
作为抛出错误的行,我敢打赌数据集中的行中至少有一个
元素
包含小于6个字符的字符串(这将导致索引错误)

你可以为这些元素创建一个创可贴,用“<代码> > < <代码> >:

替换你的<代码> < <代码> >语句。
if element == row[5]
不过,为了尽职调查,我建议对数据集进行调查,以确定有多少元素的字符串长度有问题。可能有几个。也许这些因素值得单独处理


旁注:看起来
newString
变量在这个循环中被反复设置,但在所有嵌套for循环完成后返回。这意味着您的搜索函数只返回newString的最新值。这是有意的吗?

您应该提供一个示例输入数据和整个错误跟踪,包括失败的行。您能告诉我们集合和数据集变量是什么,并告诉我们您的预期输出吗?问题是第[5]行与输入长度无关,它指向数据帧中的第六个单元格。因此,我的数据帧至少有1000行,我想将帧中的id与集合中的id进行比较。但感谢“newString”的建议,你说得对!!:)
def search_Lm_in_df_two(collection,dataset): 
    for element in collection:
        for row in dataset[1:]:

            try element == row[5]: # Try this, unless it throws an error.
                lmstring = row[6]
                newString = {shorten_string(lmstring)}

            except: # If something goes wrong, use a default and continue.
                lmstring = a_default_value
                newString = another_default_value

    return newString