【问题标题】:Error while working with construction try-except ValueError使用构造 try-except ValueError 时出错
【发布时间】:2022-09-01 16:08:37
【问题描述】:
result = []
try:
    for i in range(len(ass)):
        int(df[\'sku\'][i])
except ValueError:
    result.append(df[\'sku\'][i])

我需要收集列表中的所有错误。请告诉我,上面的代码只添加了第一个错误,我需要一切。

在遍历所有 sku 值之后,只有那些不能转换为 int 的值才应该包含在列表中。

  • 我想你想在你的 for 循环中尝试

标签: python valueerror try-except


【解决方案1】:

您可以在循环内移动 try...except :

result = []
for i in range(len(ass)):
    try:
        int(df['sku'][i])
    except ValueError:
        result.append(df['sku'][i])

您还可以将isdigit() 与列表理解一起使用,如下所示:

result = [val for val in df['sku'] if val.isdigit()]

但是,您应该注意 isdigit() 在某些情况下不起作用,例如那些有领先标志的人。

例如,'+1' 将使用int() 转换为整数类型,但将返回Falseisdigit()。同样,-1 可以使用 int() 进行正常转换,但返回 Falseisdigit()

更多信息可在documentation 中找到:

str.isdigit()

如果字符串中的所有字符都是数字并且至少有一个字符,则返回 true,否则返回 false。

【讨论】:

    【解决方案2】:

    您需要循环中的 try-except :

    result = []
    for i in range(len(ass)):
        try:
            int(df['sku'][i])
        except ValueError:
            result.append(df['sku'][i])
    

    但如果它真的是你想要的非数字 SKU 列表,

    result = [sku for sku in df['sku'] if not sku.isdigit()]
    

    【讨论】:

      【解决方案3】:

      这应该有效:

      result = []
      for i in range(len(ass)):
          try:
              int(df['sku'][i])
          except ValueError:
              result.append(df['sku'][i])
      

      【讨论】:

      • 非常感谢大家。你帮了很多忙。做了我想做的
      猜你喜欢
      • 2019-04-26
      • 2019-09-28
      • 2018-11-10
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      相关资源
      最近更新 更多