来自熊猫数据框的 json 文件中的正斜杠

Posted

技术标签:

【中文标题】来自熊猫数据框的 json 文件中的正斜杠【英文标题】:Forward slash in json file from pandas dataframe 【发布时间】:2017-09-10 19:21:55 【问题描述】:

我是 json 的完全新手,感谢任何帮助。我正在尝试将数据框转换为 json 文件。

import pandas as pd

df = pd.DataFrame( 'A' : [1., 2.5],
                    'B' : ['img/blue.png', 'img/red.png'])
print df

输出是

    A             B
0  1.0  img/blue.png
1  2.5   img/red.png

我想制作一个如下所示的 json 文件:

'[1.0,"img/blue.png"],[2.5,"img/red.png"]'

但是,当我使用以下内容时

out = df.to_json(orient='values')[1:-1]
print out

我得到了这个

'[1.0,"img\\/blue.png"],[2.5,"img\\/red.png"]'

如何在 json 文件中正确打印正斜杠?

【问题讨论】:

我不确定,但我相信你想要这些。我认为正斜杠会破坏你的 json 并且需要转义。您是否确认添加的反斜杠存在问题? 哇,你说得对。添加的反斜杠不是问题。谢谢。有没有办法给评论点赞? 有办法。但不要担心。我会添加作为答案,你可以投票 【参考方案1】:

pandas 在后台使用 ujson 库转换为 json,它似乎转义了斜杠 - 请参阅问题 here。

作为一种解决方法,您可以使用 python 标准库 json 模块转储数据 - 它不会像以前那样高效,但不会逃脱斜线。

import json

json.dumps(df.values.tolist())
Out[248]: '[[1.0, "img/blue.png"], [2.5, "img/red.png"]]'

【讨论】:

【参考方案2】:

我不确定,但我相信你想要这些。我认为正斜杠会破坏你的 json 并且需要转义。您是否已验证添加的反斜杠是否存在问题?

【讨论】:

为什么正斜杠会破坏 JSON? JSON standard 表示/ 可以\​ 转义,但不是必须被转义。跨度> 我在 python 和 java 中编写了一个测试,并且都解析了 json(包括斜杠),没有任何问题。输出符合预期(没有斜线)。我个人不知道您为什么希望正斜杠逃脱,因为它似乎不需要,但无论哪种方式都可以正常工作?。【参考方案3】:

在您将 pandas 数据帧转换为 json 的部分,如果您将使用 loads,它将转义 \ 正斜杠

out = df.to_json(orient='values')[1:-1]
print out

试试

import json
print json.dumps(json.loads(out))

对于python 3:

import json
print(json.dumps(json.loads(out)))

【讨论】:

以上是关于来自熊猫数据框的 json 文件中的正斜杠的主要内容,如果未能解决你的问题,请参考以下文章

对熊猫数据框的深度嵌套 JSON 响应

来自按级别分组的多索引熊猫数据框的子图

来自另一个数据框的熊猫多索引分配

来自数据框的嵌套字典,内部字典包含熊猫系列作为值

多个熊猫数据框的交集

如何为来自同一个熊猫数据框的所有不同列制作单独的 Seaborn kde 图?