我传入了一个变量,可以是一个字符串或一个整数。例如,它可以是'123'或123。另外,它可以是一个字符串,例如'N / A',在这种情况下,我想替换为0。
我一直在尝试做这样的事情:
our_value = int(our_value) if our_value.isdigit() else 0
问题是,当our_value是整数时,它没有方法isdigit。如果是字符串,则可以正常工作。
如何处理整数或字符串的两种情况?
答案 0 :(得分:6)
这也可以
try:
our_value = int(our_value)
except ValueError:
our_value = 0
答案 1 :(得分:3)
为避免双重转换,可以使用try
/ except
构造,例如:
try:
our_value = int(our_value)
except ValueError:
our_value = 0
在这种情况下,我们尝试将值强制为整数。如果我们已经有一个整数或一个可以解释为整数的字符串,则将成功。
其他字符串将属于我们的except
情况,因此将其设置为0。
答案 2 :(得分:1)
如果您不想编写任何异常,则可以使用以下代码:
our_value = '123' # It can be 'N/A' or 123
if type(our_value ) is str:
if our_value .isdigit():
our_value = int(our_value)
else:
our_value = 0
print(our_value)
如果类型是字符串及其数字,则可以应用int()函数。如果它是int而不是数字,则为'N / A'并转换为0。如果该值为int,则无需进行任何转换。
答案 3 :(得分:0)
这将起作用:
our_value = int(our_value) if str(our_value).isdigit() else 0
如果our_value
为整数,则它将首先转换为字符串,如果仅包含数字,则将其转换回整数。