【问题标题】: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 的值才应该包含在列表中。
标签:
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() 转换为整数类型,但将返回False 和isdigit()。同样,-1 可以使用 int() 进行正常转换,但返回 False 和 isdigit()。
更多信息可在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])