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

如何在pandas中正确编码读取CSV文件,避免特殊字符显示为问号

问题根因

你使用的latin-1编码可覆盖的字符范围有限,CSV文件中Id – Column里的–属于En Dash(长破折号),不在latin-1的编码范围内,因此读取时无法识别的字符会被默认替换为?;而Id - Number里的普通半角短横-属于latin-1编码范围,因此显示正常。

解决方法
  • 优先尝试匹配源文件的正确编码读取,是最稳妥的解决方案:
    多数CSV默认使用UTF-8编码,先测试该编码:
    my_df = pd.read_csv('my_csv.csv', encoding='utf-8')
    
    如果是Windows系统下导出的CSV,可尝试UTF-8带BOM编码:
    my_df = pd.read_csv('my_csv.csv', encoding='utf-8-sig')
    
    简体中文环境下保存的CSV可尝试GBK编码:
    my_df = pd.read_csv('my_csv.csv', encoding='gbk')
    
  • 如果不知道源文件编码,可通过第三方库自动检测:
    1. 先安装检测库:pip install chardet
    2. 检测后读取的代码如下:
    import chardet
    import pandas as pd
    
    with open('my_csv.csv', 'rb') as f:
        encode_info = chardet.detect(f.read())
    my_df = pd.read_csv('my_csv.csv', encoding=encode_info['encoding'])
    
  • 应急场景下可强制保留所有原始字符,不做编码替换:
    my_df = pd.read_csv('my_csv.csv', encoding='raw_unicode_escape')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:21:02