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

Python2.7 Pandas保存UTF-8编码CSV时俄语数据被截断问题

解决Python 2.7下Pandas保存俄语Unicode CSV数据截断的问题

我之前在Python 2.7里处理俄文Unicode数据集时也踩过几乎一模一样的坑,给你几个经过验证的解决方案:

第一步:先确认问题出在哪

首先别着急改保存代码,先排查DataFrame本身是否完整:

  • 打印列表长度和DataFrame的行数,确认数据有没有在转DataFrame时就丢了:
    print("原列表长度:", len(a))
    df = pd.DataFrame({'russian_words': a})
    print("DataFrame行数:", len(df))
    

如果这两个数字不一致,那问题出在列表生成或者DataFrame创建环节,不是保存CSV的锅。

针对CSV保存截断的解决方案

方案1:调整Pandas to_csv的参数

Python 2.7里的Pandas对Unicode的CSV处理有不少细节要注意,试试给to_csv加上这些参数:

import pandas as pd
import csv

# 假设你的列表是a
df = pd.DataFrame({'russian_words': a})
df.to_csv(
    'russian_vocab.csv',
    encoding='utf-8-sig',  # 带BOM,Windows下编辑器更容易识别编码
    quoting=csv.QUOTE_ALL,  # 给所有字段加引号,避免特殊字符打断行解析
    escapechar='\\',  # 转义引号等特殊字符
    index=False  # 不要保存默认的索引列
)

utf-8-sig比纯utf-8更友好,能避免Windows记事本打开时乱码;quoting=csv.QUOTE_ALL能确保每个俄语词汇都被引号包裹,不会因为字符里的特殊符号(比如引号、换行)导致CSV写入中断。

方案2:绕开Pandas,直接用codecs手动写入

如果Pandas的to_csv还是抽风,那就直接用Python标准库的codecs来写,更可控:

import codecs

with codecs.open('russian_vocab.csv', 'w', encoding='utf-8-sig') as f:
    # 先写表头
    f.write('russian_words\n')
    # 遍历列表写入,注意转义引号
    for word in a:
        # 如果词汇里有双引号,替换成两个双引号符合CSV规范
        escaped_word = word.replace('"', '""')
        f.write(f'"{escaped_word}"\n')

这种方式完全由你控制写入过程,不会有Pandas内部的隐性处理导致截断。

方案3:升级Pandas到Python 2.7支持的最新版

Python 2.7的Pandas最后一个稳定版本是0.24.2,如果你用的版本太老(比如0.20之前),可能存在Unicode处理的bug,升级试试:

pip install pandas==0.24.2

最后提醒

保存完CSV后,一定要用支持UTF-8的编辑器(比如Notepad++、VS Code)打开,选择编码为UTF-8或者UTF-8 with BOM,不要用Windows默认的记事本(默认编码是GBK,会显示乱码,容易误以为数据截断)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:23:28