pandas.to_html()默认使用 gbk 编码的问题。。。

2019-05-17 18:10:55 +08:00
 qazwsxkevin

从一个 html 文件已经读取表格数据进入到 pd
我准备把 pd 数据写入到一个 html 文件的时候,报了个错误,遇上了困扰了很多人编码类型的问题,

error in main!! 'gbk' codec can't decode byte 0x94 in position 256: illegal multibyte sequence

SomeFunc.py 里面的 transformCodec()是网上找的一个例子,好像不能正常工作,我理解是 2.x 版本写的,3.x 不合适?

import requests  
import pandas as pd  
import string  
import time  
import datetime  
import codecs  
  
import SomeFunc  
  
  
srcfile = 'C:/Users/Administrator/Desktop/src.html'  
  
  
if __name__ == '__main__':  
    try:  
        f = codecs.open(srcfile, 'r+', 'utf-8')  
        readStr = f.read()  
        f.close()  
        PageDF = PageDF.append(pd.read_html(readStr)[7], ignore_index=True)  
        PageDF = PageDF.drop(PageDF.tail(1).index) #删除最后一行  
        #PageDF = SomeFunc.transformCodec(PageDF)    
        PageDF.to_html('C:/Users/Administrator/Desktop/pcResult/A.html')  
      except Exception as e:
        print('error in main!!', e)
  
  
#############################  
SomeFunc.py                 #  
#############################  
  
def transformCodec(re_data):  
    try:  
        re_data = re_data.decode('gbk')  
    except Exception as error:  
        print("error")  
        print('delete illegal string,try again...')  
  
        pos = re.findall(r'decodebytesinposition([\d]+)-([\d]+):illegal', str(error).replace(' ', ''))  
        if len(pos) == 1:  
            re_data = re_data[0:int(pos[0][0])] + re_data[int(pos[0][1]):]  
            re_data = transformCodec(re_data)  
            return re_data  
    return re_data
1736 次点击
所在节点    Python
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/565154

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX