You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python 3导入扩展名.csv但存为Unicode Text的Excel文件?

解决CSV后缀实为Unicode Text格式文件的Python导入问题

这种“后缀名和实际格式不匹配”的情况真的很头疼,尤其是要批量处理几百个文件的时候!别担心,咱们一步步来解决:

问题根源

Excel保存的“Unicode Text (*.txt)”格式,本质是UTF-16编码(通常带BOM)+ 制表符分隔的文本文件,但你拿到的文件被改了.csv后缀。之前用csv模块或pandas.read_csv失败,大概率是因为没指定正确的编码和分隔符——默认的utf-8编码和逗号分隔符完全不匹配这种文件。

单个文件导入方案

方法1:用Pandas快速读取

直接指定编码为utf-16(Python会自动识别BOM),分隔符设为制表符\t

import pandas as pd

# 读取文件
df = pd.read_csv("your_file.csv", encoding="utf-16", sep="\t")
# 验证数据
print(df.head())

如果遇到编码报错,可以试试utf-16le(Excel保存的Unicode Text大多是小端序):

df = pd.read_csv("your_file.csv", encoding="utf-16le", sep="\t")

方法2:用原生csv模块读取

同样要指定编码和制表符分隔:

import csv

with open("your_file.csv", "r", encoding="utf-16") as f:
    # 指定制表符为分隔符
    reader = csv.reader(f, delimiter="\t")
    # 遍历行数据
    for row in reader:
        print(row)

批量处理几百个文件

os模块遍历文件夹,批量读取、处理并保存(比如转成真正的CSV格式):

import os
import pandas as pd

# 替换成你的文件目录
source_dir = "/path/to/your/csv_files"
# 替换成处理后文件的保存目录
target_dir = "/path/to/save/processed_files"

# 创建目标目录(如果不存在)
os.makedirs(target_dir, exist_ok=True)

# 遍历所有.csv后缀的文件
for filename in os.listdir(source_dir):
    if filename.endswith(".csv"):
        file_path = os.path.join(source_dir, filename)
        try:
            # 读取文件
            df = pd.read_csv(file_path, encoding="utf-16", sep="\t")
            # 处理逻辑(比如清洗数据、转换格式等)
            # 保存为标准CSV
            save_path = os.path.join(target_dir, f"processed_{filename}")
            df.to_csv(save_path, index=False, encoding="utf-8")
            print(f"✅ 成功处理:{filename}")
        except Exception as e:
            print(f"❌ 处理失败 {filename}:{str(e)}")

额外提示

  • 如果确认文件不含Unicode字符,处理后可以转成utf-8编码保存,后续操作会更省心;
  • 若个别文件编码异常,可以尝试用chardet库检测编码(先安装pip install chardet):
import chardet

with open("your_file.csv", "rb") as f:
    result = chardet.detect(f.read())
print(f"检测到的编码:{result['encoding']}")

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

火山引擎 最新活动