python - 将带有 `\` 的字符串转换为 json 或字典数据
问题描述
我有一个csv列数据,上学期的助教说我们可以导出和导入为json。
"""[
{\""type\"": \""account\"", \""data\"": {\""bid\"": 12, \""acc_num\"": 22}},
{\""type\"": \""card\"", \""data\"": {\""card_num\"": 85}}
]"""
与他所说的不同,我无法json
在 Postgres 中使用 type 导入它。但我可以将其导入为character varying
或text
键入。在这两种情况下,数据都被提取到一个 python 字符串中,如下所示。
[
{\type\: \account\, \data\: {\bid\: 12, \acc_num\: 22}},
{\type\: \card\, \data\: {\card_num\: 85}}
]
鉴于其原始形式,您认为将其转换为 python 数据或 json 数据的一种有效且有效的方法是什么?我试过了
1)转换\
成"
with .replace("\\",'\"')
:它没有像这样的东西那样工作得\t
很好\b
。
2)json.loads(string)
:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes:
错误。知道我不能这样做,因为它不是正确的 json 格式,但我尝试过。
编辑)来自 csv 文件的一行
名称、电话、本地、域、密码、付款、纬度、lng
Daivd,01095434668,tfalkc,smh.com.au,8mf3trl,"""[{\""type\"": \""account\"", \""data\"": {\""bid\"": 12, \""acc_num\"": 710831175086172}}, {\""type\"": \""card\"", \""data\"": {\""card_num\"": 8543466885434668}}, {\""type\"": \""card\"", \""data\"": {\""card_num\"": 1221510412215104}}, {\""type\"": \""card\"", \""data\"": {\""card_num\"": 4871213148712131}}]""",37.6274,126.98167
解决方案
这是从您发布的内容中获取有效 Python 对象的一种方法,但我认为可能有更简洁且更不容易出错的方法。之后,您可以json.dumps()
将结果存储起来。
from ast import literal_eval
a = """[
{\""type\"": \""account\"", \""data\"": {\""bid\"": 12, \""acc_num\"": 22}},
{\""type\"": \""card\"", \""data\"": {\""card_num\"": 85}}
]"""
a = literal_eval(a.replace('\""', '"'))
推荐阅读
- python - 使用类自变量作为默认类方法参数
- cmd - 根据文件类型扩展名更改文件名
- microsoft-cognitive - HoloLens 上的 onnx 1.2 模型(自定义视觉)
- javascript - 如何解决字体截取问题?
- elasticsearch - 更像这样 - 弹性搜索没有给出正确的结果
- java - JAVA 中的 Hive JDBC 连接
- vue.js - 启动 VueJS 应用程序时 JavaScript 未启用错误
- javascript - 除了 v-toolbar 之外,还有其他方法可以修复 Vuetify 中的元素吗?
- java - 100% 不可变,但仍然不是线程安全的
- react-native - 反应原生的后退按钮