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

Python下载指定CSV文件出现乱码,求正确编码解决方案

解决Global Policy Uncertainty CSV下载乱码问题

方案1:Pandas 直接读取(最简方式)

指定windows-1252编码即可正常读取,这是该文件实际使用的编码:

import pandas as pd

url = "https://www.policyuncertainty.com/media/Global_Policy_Uncertainty_Data.csv"
# 读取数据
df = pd.read_csv(url, encoding="windows-1252")
# 验证前几行数据
print(df.head())
# 保存为UTF-8编码的本地文件(避免后续乱码)
df.to_csv("Global_Policy_Uncertainty_Data.csv", encoding="utf-8", index=False)

方案2:Requests + CSV 手动处理

如果需要手动控制下载流程,注意两点:

  1. 让Requests自动处理服务器返回的gzip压缩内容
  2. 用windows-1252解码原始字节,保存时转成UTF-8
import requests
import csv

url = "https://www.policyuncertainty.com/media/Global_Policy_Uncertainty_Data.csv"
# 开启流模式并自动解压缩
response = requests.get(url, stream=True)
response.raw.decode_content = True

# 以UTF-8编码写入本地文件
with open("Global_Policy_Uncertainty_Data.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    # 逐行解码并写入
    for line in response.iter_lines(decode_unicode=True, encoding="windows-1252"):
        if line:
            writer.writerow(line.split(","))

问题根源说明

  • 你之前尝试的iso-8859-1(Latin-1)与windows-1252高度相似,但前者不支持文件中存在的部分特殊重音字符,导致解码后出现乱码。
  • 浏览器和Postman会自动检测文件编码并处理压缩响应,而代码中需要显式指定正确编码才能匹配服务器返回的内容。
  • 你原有Requests代码存在语法错误:split("","")参数错误,应该是split(","),且escapechar参数位置不正确,这也会导致写入异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:05:41