来自 pandas 数据帧的 json 文件中的正斜杠

Forward slash in json file from pandas dataframe

提问人:edge-case 提问时间:4/14/2017 更新时间:9/15/2019 访问量:13682

问:

我是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 文件中正确打印?

python json python-2.7 熊猫

评论

0赞 piRSquared 4/14/2017
我不确定,但我相信你想要这些。我认为正斜杠会破坏你的 json,需要转义。您是否验证了添加的反斜杠是一个问题?
0赞 edge-case 4/14/2017
哇,你是对的。添加的反斜杠不是问题。谢谢。有没有办法对评论投赞成票?
0赞 piRSquared 4/14/2017
有办法。但别担心。我会添加一个答案,你可以投票

答:

19赞 chrisb 4/14/2017 #1

pandas在引擎盖下使用 ujson 库转换为 JSON,它似乎逃脱了斜杠 - 请参阅此处的问题。

作为一种解决方法,您可以使用 python 标准库模块来转储数据 - 它的性能不会那么高,但不会逃脱斜杠。json

import json

json.dumps(df.values.tolist())
Out[248]: '[[1.0, "img/blue.png"], [2.5, "img/red.png"]]'
0赞 piRSquared 4/14/2017 #2

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

评论

2赞 Walter Tross 12/19/2020
为什么正斜杠要破坏 JSON?JSON 标准说 a 可以由 a 转义,但不是说它必须转义。/\​
0赞 Matt Friedman 2/1/2022
我用 python 和 java 编写了一个测试,并且都解析了 json(包括斜杠),没有任何问题。输出符合预期(无斜杠)。我个人不知道为什么您希望转义正斜杠,因为它似乎是不必要的,但无论哪种方式,它都可以正常🤷工作。
6赞 Upasana Mittal 9/15/2019 #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)))