You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas从URL读取表格返回异常字符值,该如何解析?

解决pandas读取Google文档表格的乱码问题

问题根源

你遇到的是编码解码不匹配导致的乱码。â\x96\x88是UTF-8编码的特殊字符被错误用Latin-1(iso-8859-1)解码后的结果,原字符应为全黑方块█(Unicode U+2588)——它的UTF-8编码是E2 96 88,用Latin-1解码就会得到â\x96\x88。

解决方案

方案1:手动指定编码读取页面

先用requests获取页面内容并强制指定UTF-8编码,再交给pandas解析:

import pandas as pd
import requests

url = "https://docs.google.com/document/d/e/2PACX-1vRMx5YQlZNa3ra8dYYxmv-QIQ3YJe8tbI3kqcuC7lQiZm-CSEznKfN_HYNSpoXcZIV3Y_O3YoUB1ecq/pub"
# 获取页面并设置UTF-8编码
resp = requests.get(url)
resp.encoding = "utf-8"
# 解析表格
df_list = pd.read_html(resp.text)
df = df_list[0]
print(df)
# 查看正确字符
print(df.iloc[1, 1])  # 输出 █

方案2:修复已读取的乱码数据

如果已经读取了乱码数据,可以通过重新编码解码恢复:

# 针对单个乱码字符
garbled = 'â\x96\x88'
correct = garbled.encode('latin-1').decode('utf-8')
print(correct)  # 输出 █

# 批量修复DataFrame的Character列
df['Character'] = df['Character'].apply(lambda x: x.encode('latin-1').decode('utf-8'))
print(df)

原因说明

Google文档的公开页面默认使用UTF-8编码,但pd.read_html在自动推断编码时可能误判为Latin-1,导致UTF-8字节被错误解码成乱码。通过手动指定编码或重新编码解码,就能恢复原本的特殊字符。

内容的提问来源于stack exchange,提问作者Boltu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:41:05