python如何去掉readlines和readline中的换行符和字符串前面b 您所在的位置:网站首页 联通三千兆套餐的组网设备 python如何去掉readlines和readline中的换行符和字符串前面b

python如何去掉readlines和readline中的换行符和字符串前面b

2023-10-19 11:04| 来源: 网络整理| 查看: 265

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

https://blog.csdn.net/haigear/article/details/124110900 明确回答这个问题就一句话:使用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是给指定的字符串编码格式解码,不是给一个列表解码。 文章随时可能更新:https://blog.csdn.net/haigear/article/details/124110900



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有