Python替换和剥离无法删除回车符和新行\ r \ n

时间:2016-07-19 10:44:49

标签: python replace newline

首先,对不起,我问这个问题,因为从事物看起来有数百篇关于从变量中删除\ 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。

非常感谢所有帮助

1 个答案:

答案 0 :(得分:2)

b'100\r\n'是(字节)字符串的内部表示,您不需要做任何特殊操作就可以将其传递给int

>>> s = b'100\r\n'
>>> print(s)
b'100\r\n'
>>> int(s)
100
>>>