python3字节转化字符_在Python3.6中将字节转换为字符串

我正在尝试读取和处理一个文件。这在Python2.7中运行得非常好,但我无法在Python 3中运行它。

在Python2.7中,它在不提供任何编码的情况下工作,而在Python3中,我尝试了有编码和无编码的所有组合。

经过深入研究,我发现read返回的内容在两个版本中是不同的。

在Python2.7中工作的代码:>>> f = open('resource.cgn', 'r')

>>> content = f.read()

>>> type(content)

>>> content[0:20]

'\x04#lwq \x7f`g \xa0\x03\xa3,ess to'

>>> content[0]

'\x04'

但是在Python 3中:>>> f = open('resource.cgn','r')

>>> content = f.read()

Traceback (most recent call last):

File "", line 1, in

File "/usr/local/lib/python3.6/encodings/ascii.py", line 26, in decode

return codecs.ascii_decode(input, self.errors)[0]

UnicodeDecodeError: 'ascii' codec cant decode byte 0xa0 in position 10: ordinal not in range(128)

>>> f = open('resource.cgn','rb')

>>> content = f.read()

>>> type(content)

>>> content[0:20]

b'\x04#lwq \x7f`g \xa0\x03\xa3,ess to'

>>> content[0]

4

>>> content.decode('utf8')

Traceback (most recent call last):

File "", line 1, in

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 10:

invalid start byte

我希望得到与Python2.7中相同的输出。content应该是string类型,content[0]应该是str'\x04',而不是int4

有什么线索可以告诉我怎么得到这个吗?我试过编码,但没有成功。

你可能感兴趣的:(python3字节转化字符)