You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何清理readline读取的微控制器返回数据

串口读取数据去除空bytes解决方案

你遇到的b''输出有两个核心原因:

  1. 你当前直接打印的是bytes类型对象,Python默认会给bytes类型的输出加上b前缀和引号包裹标识,这不属于数据本身的内容
  2. 当串口读取超时、或者缓冲区没有有效数据时,ser.readline()会直接返回空的bytes对象b''

对应的解决步骤如下:

  • 第一步:先过滤空的bytes返回值,再将bytes解码为字符串
    如果你的微控制器返回的是UTF-8编码的文本,可直接用如下代码处理:
bs = ser.readline()
# 仅处理非空的返回值
if bs:
    # 替换换行、回车字符后解码为字符串
    clean_str = bs.replace(b'\n', b' ').replace(b'\r', b' ').decode('utf-8')
    # 也可以用strip()方法直接删除首尾所有空白字符(包含换行、回车、空格),按需选择即可
    # clean_str = bs.strip().decode('utf-8')
    
    # 可选:过滤处理后仍为空的字符串
    if clean_str.strip():
        print(clean_str)
  • 第二步:适配非UTF-8编码场景
    如果你的微控制器用的是GBK等其他编码,修改decode方法的编码参数即可,遇到特殊字符解码报错时可以加忽略错误的参数:
# GBK编码示例
clean_str = bs.replace(b'\n', b' ').replace(b'\r', b' ').decode('gbk', errors='ignore')

注意:如果需要完全删除换行、回车字符,把替换的目标从b' '改成b''即可。

内容的提问来源于stack exchange,提问作者engr_john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:54:03