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

Python如何将字符串中的\n转义为实际换行符传递给其他程序

解决方案

问题原因

  • MQTT返回的msg.payload为bytes类型,直接使用str()转换会保留字节标识与转义符,不会自动解析转义序列
  • 你收到的字符串中\n是字面量形式的转义标识,不是实际的换行符,需要手动处理转换

修复代码

def on_message(client, userdata, msg):  # 从服务端收到PUBLISH消息时的回调
    # 解码字节内容为字符串,替换字面量\n为实际换行符
    payload_str = msg.payload.decode('utf-8').replace(r'\n', '\n')
    # 若需要同时处理\t、\r等其他标准转义符,可使用以下代码替换上一行
    # payload_str = msg.payload.decode('utf-8').encode('utf-8').decode('unicode_escape')
    print("Message received-> " + msg.topic + " " + payload_str)  # 打印收到的消息
    subprocess.Popen(["/usr/local/bin/signal-cli", "-u","+12125551212", "send", "-m", payload_str, "+12125551213"])

说明

  • 先调用decode('utf-8')将bytes类型的payload转为普通字符串,避免str()转换带来的多余格式问题
  • replace(r'\n', '\n')针对你的场景做最小修改,只会转换\n标识,不会误处理其他特殊字符
  • 若MQTT消息使用非utf-8编码,替换decode方法内的编码参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 09:06:03