簡體   English   中英

將帶有 url 的字符串格式的 DataFrame 正確轉換為 JSON

[英]Convert DataFrame with url in string format to JSON properly

我有一個包含 2 列的數據框,其中一列由 URL 組成。

示例代碼:

df = pd.DataFrame(columns=('name', 'image'))
df = df.append({'name': 'sample_name', 'image': 'https://images.pexels.com/photos/736230/pexels-photo-736230.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500'}, ignore_index=True)
df = df.append({'name': 'sample_name2', 'image': 'https://cdn.theatlantic.com/assets/media/img/mt/2017/10/Pict1_Ursinia_calendulifolia/lead_720_405.jpg?mod=1533691909'}, ignore_index=True)

我想直接將此數據幀轉換為 JSON。 我已經使用to_json()方法進行轉換,但是當我這樣做時,它會弄亂數據框中的 url。

轉換為 JSON:

json = df.to_json(orient='records')

當我打印它時,轉換會在我的 url 中每個 '/' 字符的開頭插入 '\' 字符。

print(json)

結果:

[{"name":"sample_name","image":"https:\/\/images.pexels.com\/photos\/736230\/pexels-photo-736230.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"},{"na
me":"sample_name2","image":"https:\/\/cdn.theatlantic.com\/assets\/media\/img\/mt\/2017\/10\/Pict1_Ursinia_calendulifolia\/lead_720_405.jpg?mod=15
33691909"}]

我希望 json 看起來像(在 url 中沒有額外的 '\'):

[{"name":"sample_name","image":"https://images.pexels.com/photos/736230/pexels-photo-736230.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"},{"na
    me":"sample_name2","image":"https://cdn.theatlantic.com/assets/media/img/mt/2017/10/Pict1_Ursinia_calendulifolia/lead_720_405.jpg?mod=15
    33691909"}]

我還檢查了to_json()的文檔和其他問題,但找不到處理它的答案。 我怎樣才能將我的 url 字符串轉換為 json,因為它們在數據框中?

Pandas 在內部使用ujson [PiPy]將數據編碼為 JSON blob。 ujson默認使用escape_forward_slashes選項轉義斜線。

您可以json.dumps(…)將數據框轉換為字典的結果.to_dict

>>> import json
>>> print(json.dumps(df.to_dict('records')))
[{"name": "sample_name", "image": "https://images.pexels.com/photos/736230/pexels-photo-736230.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"}, {"name": "sample_name2", "image": "https://cdn.theatlantic.com/assets/media/img/mt/2017/10/Pict1_Ursinia_calendulifolia/lead_720_405.jpg?mod=1533691909"}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM