• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何在将列表中的文字转换为浮点时处理异常?

python 来源:user1681102 4次浏览
A=[None, '0.50', '2', '4', '6', '0', '0', '0', '0.00', '0', '0', '0', '5', '1', '5', '5', '1', '1', '0', '1', '2', '2', '2', '0 (1:1)', '0', '0', '2', '2', '0', '0', '1', '2', '0'] 
B=[] 
for elem in A: 
    if elem is not None: 
     B.append(float(elem.strip("''"))) 
    else: 
     B.append(elem) 
print B 

我有一个列表,其中包含上面显示的值。当我尝试使用熊猫添加到Excel表格时,它将被添加为文本而不是float或int。我想删除引号,以便它不会被视为excel表格中的文本,我知道它可以使用split来完成,如果我尝试将所有这些转换为float,它将引发此’0( 1:1)’元素说无效文字为float。我该如何处理?如何在将列表中的文字转换为浮点时处理异常?


===========解决方案如下:

更简单的解决方案是将包裹for体在try-except和附加None或原始值(elem)如果它没有特定的迭代:

A = [None, '0.50', '2', '4', '6', '0', '0', '0', '0.00', '0', '0', '0', '5', '1', '5', '5', '1', '1', '0', '1', '2', '2', '2', '0 (1:1)', '0', '0', '2', '2', '0', '0', '1', '2', '0'] 

B = [] 

for elem in A: 
    try: 
     B.append(float(elem)) 
    except (ValueError, TypeError) as error: 
     B.append(elem) 

     # Or, if you don't want to preserve the non-numeric values: 

     # B.append(None) 

print(B) 

一个ValueError会被抛出时不能解析为float,而elemNone时将丢弃TypeError

一样,如果使用和ifelemNone和两个异常可以持续进行处理(假设这是你想要的)你不需要检查。

注意不需要.strip("''"),因为它实际上没有做任何事情。 According to the docs, strip() will…:

Return a copy of the string with the leading and trailing characters removed.

也就是说,它会尝试从一开始就和你的价值观的结尾处,删除'',但没有你的价值观的开始或两个单引号结束。实际上,它们中的任何一个都包含引号,它们周围的那些只是表示字符串的方式,但不是它们的价值的一部分。

此外,float()将自动采取Float转换一个数字('1')的字符串表示的护理。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)