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

Socket接收消息前出现'b'的原因及去除方法

问题解答

为什么会出现b标识?

socket.recv(1024)返回的是bytes(字节)类型的数据,这是网络传输中数据的原生格式。Python在打印bytes对象时,会自动添加开头的b和包裹内容的单引号,用来明确标识这是字节数据而非普通字符串——这些符号只是Python对bytes类型的显示形式,并不是实际接收到的消息内容的一部分。

你的代码里虽然调用了word.decode(),但没有把解码后的结果重新赋值给变量,word仍然是原始的bytes对象,所以打印时还是会显示b和引号。

如何去除b及两侧引号?

只需要正确处理解码后的字符串即可,有两种简单方式:

方式1:保存解码后的结果再打印

import socket

s = socket.socket()
s.connect(('123.456.78.9', 8080))  # 注意connect参数需传入元组,原代码此处存在语法错误
word = s.recv(1024)
decoded_word = word.decode()  # 将bytes解码为字符串并保存
print(decoded_word)

方式2:直接打印解码结果

import socket

s = socket.socket()
s.connect(('123.456.78.9', 8080))
word = s.recv(1024)
print(word.decode())  # 直接打印解码后的字符串

补充:指定编码格式(推荐)

如果不确定对方发送的编码,建议显式指定编码(比如常用的utf-8),避免因默认编码不一致导致解码错误:

print(word.decode('utf-8'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:36:21