首先,对不起,我问这个问题,因为从事物看起来有数百篇关于从变量中删除\ n等的帖子,但似乎没有任何效果我
所以我使用arduino从传感器中采样值并将它们串行发送到我的python脚本并使用serial.readline()读取行。格式化非常奇怪,我得到以下格式的消息:
b'100\r\n'
b''
b''
b''
b'101\r\n'
b''
b''
b'102\r\n'
我用if num语句删除空行。我不确定为什么我会把b放在前面,但是我可以使用替换以及叛逆来消除那种罚款。没有什么,不替换也不剥离\ r \ n。我究竟做错了什么?这是我的代码
try:
num=ser.readline()
if num:
print(num)
num=str(num)
num = num.replace('b','')
num = num.replace("'",'')
num = num.replace('\r\n','')
num=num.strip('\n\r')
num=int(num)
print(num)
此代码的输出为:
b'100\r\n'
100\r\n
b'101\r\n'
101\r\n
b'102\r\n
102\r\n
调试num变量时需要注意的一些奇怪的事情似乎在我做
之前没有创建num=str(num)
或者至少它没有显示在spyder的变量选项卡中。此外,我需要这一行,因为没有它,替换会抛出一个类型错误,说"需要类似字节的对象,而不是' str'"
N.B。当我没有转换为字符串时,它会抛出类型错误,说它不应该是一个字符串!
其次使用" "或者' '封装b作品,只有#34;'"因为我假设我试图写评论但是没有" \ r \ n"也没有' \ r \ n'适用于\ r \ n。
非常感谢所有帮助
答案 0 :(得分:2)
b'100\r\n'
是(字节)字符串的内部表示,您不需要做任何特殊操作就可以将其传递给int
:
>>> s = b'100\r\n'
>>> print(s)
b'100\r\n'
>>> int(s)
100
>>>