首页 > 解决方案 > 应该被捕获和跳过的 ValueError,但会使程序崩溃

问题描述

有什么问题:

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

对于某些背景,该条目Dataframe是地址的字符串。的参数int()只是第一个“单词”,在这种情况下是街道号码。这里的逻辑是我想尝试将该街道号码转换为整数,如果它碰巧抛出 TypeError 或 ValueError,我想跳到for嵌套在其中的循环的下一个迭代,即到下一个数据框的行。这是实用的,因为我正在解析的 CSV 包含数千个地址,并且偶尔会出现奇怪的格式(例如“74271/2”,这是在测试集中始终抛出此错误的少数条目之一)。

我希望这段代码在尝试转换为整数期间捕获错误,然后再次跳到循环的下一次迭代,但它会做任何事情,而不是它应该做的事情。

提前致谢。

标签: pythonpandasstring

解决方案


尝试做

            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

这将检查两个错误并且程序不会崩溃。您可以将此扩展到您想要检查的任何数量的错误。


推荐阅读