ValueError, который следует отловить и пропустить, но приводит к сбою программы - PullRequest
1 голос
/ 05 августа 2020

В чем проблема:

            try:
                number = int((self.final_df_1[index1_name][i])[:first_space_a])
            except TypeError or ValueError:
                continue

В некоторых случаях эта запись в Dataframe является строкой адреса. Аргумент int() - это просто первое «слово», которым в данном случае является номер улицы. Лог c здесь заключается в том, что я хочу попытаться преобразовать этот номер улицы в целое число, и если это произойдет с выбросом TypeError или ValueError, я хочу перейти к следующей итерации for l oop, что это вложен в ie в следующую строку фрейма данных. Это практично, потому что CSV, которые я анализирую, содержат тысячи адресов, и иногда один из них будет отформатирован странно (например, «74271/2», который является одной из немногих записей, которые постоянно вызывают эту ошибку в тестовом наборе).

Я ожидал бы, что этот фрагмент кода во время попытки преобразования в целое число перехватит ошибку и снова перейдет к следующей итерации l oop, но вместо этого он сделает что угодно, кроме это должно быть сделано.

Заранее спасибо.

1 Ответ

0 голосов
/ 05 августа 2020

попробуйте сделать

            try:
                number = int((self.final_df_1[index1_name][i])[:first_space_a])
            except (TypeError,ValueError):
                continue

вместо

            try:
                number = int((self.final_df_1[index1_name][i])[:first_space_a])
            except TypeError or ValueError:
                continue

Это проверит обе ошибки, и программа не будет срабатывать sh. Вы можете распространить это на любое количество ошибок, которое хотите проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...