首页 > 解决方案 > Python3:写入文件时从字符串中删除“b”

问题描述

我正在使用 Python3 将传入的数据从 tcp 连接转发到字符设备。下面的代码是我从 tcp 流接收数据的部分。数据应全部解释为 ASCII。一旦形状 [...] 的数据报完成,它应该被发送到字符设备文件。

def tcp2devWorker(devwrt,tcp):
    tcp2devbuf="";
    while (1):
        chunk=str(tcp.recv(64));
        for b in range(len(chunk)):
            if chunk[b]=="[":
                tcp2devbuf="[";
            elif chunk[b]=="]":
                tcp2devbuf+="]";
                print("From TCP: ",tcp2devbuf);
                devwrt.write(tcp2devbuf);
                devwrt.flush();
            else:
                tcp2devbuf+=str(chunk[b]);

打印在每个块的前面显示“b”。我以为是印刷品。而在字符器中也是显示出来的。打印输出:

From TCP:  [)!!!!!!!!!!!!!!|SEFMTE8K#######################################'b'################################################################'b'################################################################'b'################################################################'b'#############################################################]

我读到它与编码有关,但我没有正确理解这个概念。无论我以何种方式编码和解码,都无法摆脱'b'。

有人可以指出我所缺少的吗?

标签: python-3.xstringtype-conversion

解决方案


如果您只想'b'tcp2devbuf. 然后你可以使用tcp2devbuf.replace("'b'","").

像这样

def tcp2devWorker(devwrt,tcp):
    tcp2devbuf="";
    while (1):
        chunk=str(tcp.recv(64));
        for b in range(len(chunk)):
            if chunk[b]=="[":
                tcp2devbuf="[";
            elif chunk[b]=="]":
                tcp2devbuf+="]";
                tcp2tcp2devbuf = devbuf.replace("'b'","")   # <---
                print("From TCP: ",tcp2devbuf);
                devwrt.write(tcp2devbuf);
                devwrt.flush();
            else:
                tcp2devbuf+=str(chunk[b]);

推荐阅读