在python中从十六进制编码解码html和波斯语时出错

在python中从十六进制编码解码html和波斯语时出错,python,python-3.x,utf-8,hex,decoding,Python,Python 3.x,Utf 8,Hex,Decoding,我有一些十六进制编码的字符串,如下所示: data=\xd8\xa7\xdb\x8c\xd9\x84\xda\x86\xdb\x8c\xd8\xa7\xda\xaf\xd8\xb1\xda\x86\xd9\x87\xd8\xa7\xd9\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa 它包含一些波斯语字符串和一些HTML元素 使用转换它们并获得有意义的结果(我不确定字符串是否为十六进制!),但当我想用python解码字符串时,总是会出现错误 使用编解码器: 编解码器。解码(数据,

我有一些十六进制编码的字符串,如下所示:

data=\xd8\xa7\xdb\x8c\xd9\x84\xda\x86\xdb\x8c
\xd8\xa7\xda\xaf\xd8\xb1\xda\x86\xd9\x87\xd8\xa7\xd9\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa

它包含一些波斯语字符串和一些HTML元素

使用转换它们并获得有意义的结果(我不确定字符串是否为十六进制!),但当我想用python解码字符串时,总是会出现错误

使用编解码器:
编解码器。解码(数据,'hex',错误='ignore')

我明白了

AssertionError                            Traceback (most recent call last)
<ipython-input-124-5246163fba41> in <module>()
----> 1 codecs.decode(data,'hex',errors='ignore')

AssertionError: decoding with 'hex' codec failed (AssertionError: )
你有什么建议?字符串是十六进制的吗?如果字符串中有一些none-hex,我如何在解码过程中忽略它们

字符串是十六进制的吗

不,它是以字节为单位的,使用的是不正确的编码

>>> 'data  \xd8\xa7\xdb\x8c \xd9\x84\xda\x86\xdb\x8c<br/> \xd8\xa7\xda\xaf\xd8\xb1\xda\x86\xd9\x87 \xd8\xa7\xd9\x82\xd8\xaf\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa'.encode('latin-1').decode('utf-8')
'data  ای لچی<br/> اگرچه اقدامات'
>>>'data\xd8\xa7\xdb\x8c\xd9\x84\xda\x86\xdb\x8c
\xd8\xa7\xda\xaf\xd8\xb1\xda\x86\xd9\x87\xd8\xaf\xd8\xa7\xd9\x85\xd8\xd8\xd7\xda\xaa'。编码('latin.decode('utf-8')) “数据”
您的代码适用于
数据
但不适用于其他字符串!例如:
('\\r\\n\\xd8\\xa7\\xd8\\xb5\\xd9\\x84 44\\xd9\\xbe\\xd8\\xb3\\xd8\\xd8\\xa7\\xd8\\xb2 21\\xd9\\x85\\xd8\\xa7\\r\\n')
后者有问题吗?为什么它被破坏了?那文本的编码进一步错误了。使用unicode转义码进行解码<代码>>>'\\r\\n\\xd8\\xa7\\xd8\\xb5\\xd9\\x84 44\\xd9\\xbe\\xd8\\xb3\\xd8\\xd8\\xb2 21\\xd9\\x85\\xd8\\xa7\\xd9\\x87\\r\\n.编码('latin-1')。解码('unicode-escape')。编码('latin-1')。解码('utf-8')'!你能解释一下它是怎么工作的吗?
>>> 'data  \xd8\xa7\xdb\x8c \xd9\x84\xda\x86\xdb\x8c<br/> \xd8\xa7\xda\xaf\xd8\xb1\xda\x86\xd9\x87 \xd8\xa7\xd9\x82\xd8\xaf\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa'.encode('latin-1').decode('utf-8')
'data  ای لچی<br/> اگرچه اقدامات'