zipfile读取zip文件以及txt编码问题 --pyhton

0、源文件格式如下

zipfile读取zip文件以及txt编码问题 --pyhton_第1张图片
把以上文件进行zip压缩,文件后缀为zip。
在这里插入图片描述

1、用zipfile包中的ZipFile进行解压

import tensorflow as tf
import zipfile

with zipfile.ZipFile('./testzip.zip') as z:
    read = tf.compat.as_str(z.read(z.namelist()[0])).split()
read

输出:

['\ufeff626888', '--', '我爱中国']

输出之后会发现出现了奇怪的乱码:

\ufeff

2、解决办法

python没法准确地读取该文件编码格式,可以先将这些读取内容转化为字符串(否则为bytes格式,没有encode方法),然后进行编码和解码,注意解码的格式为“utf-8-sig”:

with zipfile.ZipFile('./testzip.zip') as z:
    read = tf.compat.as_str(z.read(z.namelist()[0])).encode('utf-8').decode('utf-8-sig').split()

输出:

['626888', '--', '我爱中国']

3、utf-8与utf-8-sig区别

UTF-8以字节为编码单元,它的字节顺序在所有系统中都是一様的,没有字节序的问题,也因此它实际上并不需要BOM(“ByteOrder Mark”)。但是UTF-8 with BOM即utf-8-sig需要提供BOM。

你可能感兴趣的:(tensorflow,&,python)