2015-05-28 73 views
1

我通过COM端口与调制解调器通信以接收CSQ值。从字符串转换为Int

response = ser.readline() 
csq = response[6:8] 

print type(csq) 

返回如下:

<type 'str'> and csq is a string with a value from 10-20 

对于进一步的计算我尝试转换 “CSQ” 成一个整数,但

i=int(csq) 

返回以下错误:

invalid literal for int() with base 10: '' 
+0

不要忘记标记一个答案是正确的,以帮助那些在未来看到这个问题的人! – Scironic

回答

5

稍微更Python的方式:

i = int(csq) if csq else None 
3

您的错误消息显示t你试图将一个空字符串转换成int这会导致问题。

总结你的代码中的if语句来检查空字符串:

if csq: 
    i = int(csq) 
else: 
    i = None 

注意,空对象(空列表,元组,集合,字符串等)评估在Python False

1

作为替代,你可以把你的代码的尝试 - 除了块内:

try: 
    i = int(csq) 
except: 
    # some magic e.g. 
    i = False