ai didi

python - 删除错误字符 "\xC2"python字符串

转载 作者:行者123 更新时间:2023-12-01 04:21:17 24 4
gpt4 key购买 nike

我有下一个代码:

string_msg = '\x80\x01\x00\x00\x00\x00\x53\x58\x00\x1C\x00\x00\x00\x08\x00\x01\x00\x74\x00\x00\x00\x0A\x00\x54\x00\x00\x00\x03'
print(string_msg)
if sys.version < '3':
print(":".join("{:02x}".format(ord(c)) for c in string_msg))
else:
print(":".join("{:02x}".format(c) for c in string_msg.encode()))

在Python 2中,结果是:

80:01:00:00:00:00:53:58:00:1c:00:00:00:08:00:01:00:74:00:00:00:0a:00:54:00:00:00:03

但是在python 3中,结果是:

c2:80:01:00:00:00:00:53:58:00:1c:00:00:00:08:00:01:00:74:00:00:00:0a:00:54:00:00:00:03

现在我需要在 python 3 中执行这段代码,所以我必须删除开头的第一个字节,以便删除“c2”,一切都会好起来的,但尝试用太多代码来做到这一点我在这个论坛中发现例如:

string_msg = string_msg[1:]
string_msg.replace('\xC2', '')
string_msg = ''.join([i if ord(i) < 130 else '' for i in string_msg])

结果总是相同的:

01:00:00:00:00:53:58:00:1c:00:00:00:08:00:01:00:74:00:00:00:0a:00:54:00:00:00:03

还删除第二个字节 80,所以我的问题是:如何仅删除第一个字节 c2 以及为什么当我尝试这样做时,第二个字节是也被删除了?

最佳答案

问题是 string_msg 在 Python 2 上是一个字节串,尽管看起来相同,但在 Python 3 上它是一个 Unicode 字符串——一个字节 b'\x80'与 Unicode 代码点 u'\x80' 是完全不同的概念:相同的 Unicode 代码点可以使用不同编码中的不同字节表示,反之亦然,相同字节可以表示不同编码中的不同字符。

如果 string_msg 是字节序列,则使用 b'' 文字:

data = b'\x80\x01\x00\x00\x00\x00\x53\x58\x00\x1C\x00\x00\x00\x08'
print(":".join(map("{:02x}".format, bytearray(data))))
# -> 80:01:00:00:00:00:53:58:00:1c:00:00:00:08

关于python - 删除错误字符 "\xC2"python字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33649563/

24 4 0
文章推荐: Jquery提及输入: add tag on click of a link
文章推荐: jquery - 如何让slideToggle从底部滑动(jQuery)
文章推荐: .html() 中的 Jquery "
文章推荐: python - 尽管给出了精确的参数,但参数数量无效(TypeError)
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com