使用Pandas读取含特殊字符URL的CSV时出现UnicodeEncodeError如何解决?
解决Pandas读取含非ASCII字符URL时的UnicodeEncodeError
问题根源在于URL中包含é这类非ASCII字符,直接传入pd.read_csv()时,底层HTTP请求工具无法正确处理该字符的编码,导致请求阶段抛出编码错误——这也是你之前更换文件编码、修改引擎无效的原因,因为问题出在URL请求环节,而非CSV文件内容的解码环节。
解决方案1:手动编码URL中的非ASCII字符
使用Python标准库urllib.parse.quote()对URL中的非ASCII部分进行百分号编码,将é转换为符合URL规范的%C3%A9:
import pandas as pd from urllib.parse import quote original_url = 'http://é.com' # 对域名部分进行编码 encoded_url = 'http://' + quote('é.com') # 正常读取CSV df = pd.read_csv(encoded_url, encoding='utf-8')
解决方案2:借助requests库处理请求
requests库会自动处理URL的编码问题,先获取文件内容再传给Pandas读取:
import pandas as pd import requests from io import StringIO url = 'http://é.com' # 发送请求,requests自动处理URL编码 response = requests.get(url) response.encoding = 'utf-8' # 指定响应编码 # 将响应内容转为可读取的流对象 df = pd.read_csv(StringIO(response.text))
内容的提问来源于stack exchange,提问作者SciPy
相关产品推荐
相关产品推荐

