python3 编码与解码问题

来源:互联网 发布:淘宝上买书可靠吗 编辑:程序博客网 时间:2024/05/18 00:30

python3中的转码,必须是byte类型的,str类型的会返回未定义方法。

示例代码如下

1 doc = pq(start_html.content) 2 print("orig text=", doc.text())3 byte1 = bytes(doc.text(),"utf-8")4 print("dest text=", byte1.decode("gb2312"))

byte类型的decode和encode方法就是用来做转码的。

下面是例子:

import osimport zipfiledef unzip_dir(zipfilename):    fullzipfilepath = os.path.abspath(zipfilename)  #压缩文件的绝对路径C:\xxx.zip    print(fullzipfilepath)    unzipdir = fullzipfilepath.split('.zip')[0][0:] #解压文件的根目录C:\    if not os.path.exists(fullzipfilepath):        print("Dir %s is not exists,input fullzipfilepaht")        fullzipfilepath = input()    if not os.path.exists(unzipdir):        os.mkdir(unzipdir)    zf = zipfile.ZipFile(fullzipfilepath, 'r')  #读方式打开压缩    for filename in zf.namelist():  #zf.namelist() 获取压缩包文件中的文件列表        print(filename)        eachfilepath = os.path.normpath(os.path.join(unzipdir, filename))  #将文件路径转化为正常路径,                                                             # 从压缩文件获取的文件列表中,获取的文件格式是xxxx.txt,               eachfiledir = os.path.dirname(eachfilepath)        if not os.path.exists(eachfiledir):            os.mkdir(eachfiledir)            # os.makedirs(eachfiledir)  #使用makedirs(),递归创建目录,使用mkdir(),上级目录不存在,会报出异常        fp = open(eachfilepath, 'w', encoding="utf-8")        # fp.write(str(zf.read(filename)))        # fp.write(str(zf.read(filename)))        # print(zf.read(filename))        # print("zf.read(filename)=", zf.read(filename).decode("gb2312"))        print("zf.read(filename)=", zf.read(filename).decode("gbk"))        # fp.write(str(zf.read(filename).decode("gb2312")))        fp.write(str(zf.read(filename).decode("gbk")))        fp.close()    zf.close()if __name__ == '__main__':    zipfilename = "E:\\share\\python_excel\\20170710.zip"    unzip_dir(zipfilename)

结果如图:

原创粉丝点击