python2.7 中\x00 怎么删除

2021 年 3 月 29 日
 QBugHunter

Python2.7

首先是服务器穿过来的字节流,需要转换为 string(按照 ascii),比如 16 进制字节流是

"31 35 37 50 55 00 00 00 00 00"

需要转为 string

"157PU"

于是有下列代码

def byte_to_string(d):
    return binascii.a2b_hex(d)

但实际转换结果为

a = byte_to_string('31 35 37 50 55 00 00 00 00 00')
print a
>>>"157PU\x00\x00\x00\x00\x00"

请问这个 string 里几个\x00 怎么删除,我用

a.strip()
a.replace("\n","")

都不好使,最用用 len(a)测试的时候结果都还是 10

3422 次点击
所在节点    Python
9 条回复
momo1999
2021 年 3 月 29 日
s = "31 35 37 50 55 00 00 00 00 00"
b = bytes.fromhex(s)
s = b.decode()
s = s.replace('\0', '')
ruanimal
2021 年 3 月 29 日
"157PU\x00\x00\x00\x00\x00".strip('\x00')
Keyes
2021 年 3 月 29 日
这种直接把一整个缓冲区丢出来的服务端真心蛋疼
Olament
2021 年 3 月 29 日
a.rstrip('\x00')
julyclyde
2021 年 3 月 29 日
用\n 那不是显然不好使么……
fuis
2021 年 3 月 29 日
用楼主的话来回复楼主:

没有十年脑。。。。
算了
dingwen07
2021 年 3 月 29 日
a.strip('\x00')不行就
a.strip('\\x00')
iptables
2021 年 3 月 30 日
>>> "157PU\x00\x00\x00\x00\x00"
'157PU\x00\x00\x00\x00\x00'
>>> a = "157PU\x00\x00\x00\x00\x00"
>>> a.rstrip('\x00')
'157PU'
>>> a.rstrip('\n')
'157PU\x00\x00\x00\x00\x00'
>>> a.rstrip('\0')
'157PU'
iptables
2021 年 3 月 30 日
\n 相当于 \x0a,和 \x00 完全不一样啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/766188

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX