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

Python pd.read_csv读csv报UnicodeDecodeError如何添加r原始字符串前缀

问题相关代码
from os import listdir
from os.path import join, isfile
import pandas as pd

# 为指定区域创建日志文件路径
region_log_filepath = join(log_files_folder_path, region)

# 存储所有文件路径
files = [join(region_log_filepath, file) for file in listdir(region_log_filepath) if isfile(join(region_log_filepath, file))]

for file in files :
    if file.endswith('csv'):
        filename = (file.split('Log-')[-1]).split('.csv')[0]
        print(f'\nreading file: {filename}')
        log_file = pd.read_csv(file,encoding='unicode_escape')

运行代码抛出如下错误:

UnicodeDecodeError: 'unicodeescape' codec can't decode bytes in position 26850-26851: truncated \UXXXXXXXX escape


核心说明

首先明确:r''原始字符串前缀是Python语法层面的标记,仅对代码里直接写死的字符串字面量生效,无法直接给动态生成的file变量加r前缀。如果你的路径是硬编码在代码里的,直接在定义路径字符串的时候加r前缀即可,从根源避免反斜杠被识别为转义符:

# 硬编码路径时直接加r前缀
log_files_folder_path = r'D:\project\log_files'
region = r'north_china'

后续用os.path.join拼接出来的路径会自动处理转义逻辑,不需要额外处理。


真正的报错原因与修复方案

你当前遇到的报错本质不是路径转义问题,是encoding参数配置错误:

  • unicode_escape是Python用来解析源码中Unicode转义序列的专用编码,不是用来读取普通CSV文件的
  • 当CSV文件内容里存在单独的\字符时,unicode_escape编码会把它识别为转义符开头,找不到后续完整的转义序列就会抛出你看到的截断错误

直接把read_csv的编码参数换成CSV文件实际使用的编码即可,按优先级测试这几个常用编码即可:

# 优先试通用utf-8
log_file = pd.read_csv(file, encoding='utf-8')
# utf-8报错就试国内Windows常用的gbk
# log_file = pd.read_csv(file, encoding='gbk')
# 以上都报错可以试latin-1,支持任意字节读取不会抛解码错误
# log_file = pd.read_csv(file, encoding='latin-1')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:51:19