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

Python/pandas如何正确读取含西里尔字符的cp1251编码CSV文件

问题解决办法

核心原因

你直接给pd.read_csv()传入远程URL时,pandas会先通过自带的HTTP请求工具拉取内容,这一步会自动对字节流做编码识别,你后续传入的encoding参数不会作用在拉取阶段的解码逻辑,因此即使指定了正确编码,拉取阶段已经把西里尔字符解码为乱码,后续无法恢复。

可行方案

方案1:读取本地已下载的文件

本地文件不存在远程拉取的编码识别问题,直接指定编码读取即可:

import pandas as pd
# 替换为你本地的文件实际存储路径
local_file = r'C:\Users\dryingmouth\data\bills\plenary_agenda-skl9.csv'
bills = pd.read_csv(local_file, encoding='cp1251')
bills.head()

方案2:直接读取远程链接无需下载

先用requests库获取文件的原始字节内容,手动指定编码解码后再传入pandas,避免自动识别编码出错:

import pandas as pd
import requests
from io import StringIO

url = 'https://data.rada.gov.ua/ogd/zal/ppz/skl9/plenary_agenda-skl9.csv'
# 获取文件原始字节
resp = requests.get(url)
# 手动指定编码解码为文本
file_text = resp.content.decode('cp1251')
# 读入DataFrame
bills = pd.read_csv(StringIO(file_text))
bills.head()

异常排查

如果上述操作后仍显示乱码,可按以下步骤逐一排查:

  • 替换编码参数测试:乌克兰语常用编码还有koi8-u、utf-8、utf-8-sig,逐一替换encoding参数尝试即可
  • 确认文件实际编码:可打印原始字节内容print(resp.content[:500])查看字符特征,确认匹配的编码类型
  • 升级pandas版本:旧版本pandas存在编码处理bug,可执行pip install --upgrade pandas升级到最新版本后重试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:06:02