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

为什么读取CSV存储的Python字典时,值中会出现反斜杠转义字符?

反斜杠出现的原因
  • 存储环节的类型转换问题:你调用writer.writerow([key, value])写入CSV时,value本身是谷歌API返回的列表/字典类型,csv.writer会自动调用str()方法把它转为字符串格式再写入,没有保留原生的结构化数据类型。
  • 显示层面的转义逻辑:CSV标准规定,如果字段内容包含引号、逗号等特殊字符,写入时会自动给整个字段套双引号,同时把字段内部的双引号转义为两个连续的双引号(就是你用cat命令看到的""I'll""格式)。csv.reader读取时会自动把两个双引号还原为单个,此时你拿到的是包含单/双引号的普通字符串,Python打印字符串的字面量形式时,会给字符串内部的引号加反斜杠做转义显示,这些反斜杠只是Python的展示形式,并不是字符串的实际内容。
解析为普通Python字典的方法

你可以用ast.literal_eval把读取到的字符串形式的结构化数据,还原为原生的Python列表/字典对象,修改后的读取代码如下:

import csv
import ast

reader = csv.reader(open('out.csv', 'r'))
d = {}
for row in reader:
    k, v = row
    # 字符串转Python原生结构化对象
    d[k] = ast.literal_eval(v)

转换完成后你就可以正常按键取值,比如d['results'][0]['alternatives']这类操作都可以正常执行。

如果你后续还有类似的结构化数据存储需求,直接用JSON格式会比CSV更适配,不需要额外处理类型转换问题,参考代码如下:
存储代码:

import json
import proto

response_json = proto.Message.to_dict(response)
with open('out.json', 'w', encoding='utf-8') as f:
    json.dump(response_json, f, ensure_ascii=False, indent=2)

读取代码:

import json
with open('out.json', 'r', encoding='utf-8') as f:
    d = json.load(f)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:57:02