Python индекс строки функции вне диапазона - PullRequest
0 голосов
/ 13 января 2020
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

Получение этого индекса ошибки. Просто сравнивая коллекцию с идентификаторами с элементами в CSV-файле.

Пробные решения из похожих потоков, но они не будут работать.

IndexError: строковый индекс вне диапазона

1 Ответ

0 голосов
/ 13 января 2020

Обращаясь к вашему встроенному комментарию, который указывает на

if element == row[5]

как строку, выдающую ошибку, я бы поспорил, что хотя бы один element в строках вашего набора данных содержит строки короче 6 символов (что может привести к ошибке индекса).

Вы можете создать лейкопластырь для этих элементов, заменив оператор if на try-except:

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

Для должной осмотрительности Тем не менее, я бы предложил провести исследование набора данных, чтобы определить, сколько элементов имеют проблемные длины строк c. Там может быть несколько. Возможно, с этими элементами стоит иметь дело отдельно.

Примечание: похоже, что переменная newString задается снова и снова в этом l oop, но возвращается после того, как все вложенные циклы for полный. Это означает, что ваша функция поиска возвращает только последнее значение newString. Это намеренно?

...