输入是一个字节变量,其值为b'\x1f\x8b\x08\x00',需要将其转换为字符串。
预期输出为'\x1f\x8b\x08\x00'

我该如何实现?

我正在使用zlib来获取输入的gzip数据,并且需要解压缩为浏览器的字符串。

我尝试添加errors='ignore'参数。

我尝试提供“ latin1”编码,但浏览器无法解压缩数据。

>>> a = b'\x1f\x8b\x08\x00'
>>> z = a.decode('utf-8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
>>> z = a.decode('utf-8', errors = 'ignore')
>>> z
'\x1f\x08\x00'


预期结果'\x1f\x8b\x08\x00'

最佳答案

您可以转换字符串并去除不需要的字符:

z = b'\x1f\x8b\x08\x00'
a = str(z)[2:-1]
print(a)
print(type(a))


输出:

\x1f\x8b\x08\x00
<class 'str'>


在Python3.7中的用法:

Python 3.7.4 (default, Aug 17 2019, 13:54:58)
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = b'\x1f\x8b\x08\x00'
>>> b = str(a)[2:-1]
>>> b
'\\x1f\\x8b\\x08\\x00'
>>> print(b)
\x1f\x8b\x08\x00
>>>

10-08 13:16