python如何去掉readlines和readline中的换行符和字符串前面b
  TEZNKK3IfmPf 2024年03月29日 57 0

前面一片文中python端收到的arduino端来的hello arduino带了开头和结尾的换行符,怎么去掉他们呢?

明确回答这个问题就一句话:使用rstrip()!
Python中rstrip() 的作用是删除 string 字符串末尾的指定字符,默认为空白符,包括空格、换行符、回车符、制表符。所以这个rstrip和VB中我们用得比较多的trim()函数是一个作用,可能还更强大!
既然他可以默认删除字符串末尾的空格换行回车制表符,那么用在我们这里刚好合适。

1、首先来看readline

readin=ser.readline()
readin=readin.rstrip()
print(readin)

输出结果为:
b’hello arduino!’
我们一定还是不满意,前面带了一个b,这个b说明,我们现在取到的是一个字节数组bytes,继续转化为str即可

 	readin=ser.readline()
 	x=readin.rstrip()
 	y=readin.decode("utf-8")
 	print(y)

那么就输出正常了!输出结果为
hello arduino!

2、再来看看readlines
如果我们前面从串口里通过readlines拿到的是一个list,那么如何对list进行去换行符号呢?通过循环,代码如下:

readIn=ser.readlines()
readIn=[i.rstrip() for i in readIn]
print(readIn)

里面的每个元素都是一个bytes,要得到干净的一个字符串,方法同上面readline的处理。

readIn=ser.readlines()
readIn=[i.rstrip() for i in readIn]
for i in readIn:
  		print(i.decode("utf-8"))

很显然,经过处理的字符串就没有了换行符了。

3、decode的说明
Python中decode() 方法以 encoding 指定的编码格式解码字符串。默认编码为字符串编码。
当我们通过readlines读取到串口发过来的数据的时候,我们不用着急把他打印出来,实际通过readlines读到的是一个list,那么我们逐个把他们取出来,decode之后就可以显示正常了。

  	readIn=ser.readlines()
  	for i in readIn:
  		print(len(i))
  		print(i.decode("utf-8"))

注意,没有从list中取出,是不可以直接对list使用解码的。因为decode是给指定的字符串编码格式解码,不是给一个列表解码。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年03月29日 0

暂无评论

推荐阅读
TEZNKK3IfmPf