首页 > 解决方案 > 从 jsonify 结果 python 中删除索引

问题描述

所以我正在尝试使用 Flask 进行一些部署。这是我的代码:

from flask import Flask
from flask import request, jsonify

from kompasscrap import kompas_fun
from detikscrap import detik_fun

import requests
from bs4 import BeautifulSoup
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import os.path
import re
from datetime import datetime
import json

scrapdate = str(datetime.today().strftime('%d-%m-%Y'))
def create_app():
    app = Flask(__name__)

    @app.route('/', methods=['POST'])
    def index():
        news_site = request.get_json()
        kompas = bool(news_site.get("kompas"))
        detik = bool(news_site.get("detik"))
        scrapdata = []
        if kompas:
            scrapdata.append(kompas_fun())
        if detik:
            scrapdata.append(detik_fun())

        df = pd.DataFrame(scrapdata)
        list_dct = df.to_dict(orient='records')
        dct = {"date":scrapdate, "data": list_dct}
        return jsonify(dct or {'value': 'error'})

    return app

我正在使用 Postman 进行 json 请求。但是输出是这样的:

{
    "data": [
        {
            "0": {
                "category": "Global",
                "content": "Kemampuan Bersembunyi Pasukan Khusus Inggris, Bisakah Kamu Temukan?, , LONDON, KOMPAS.com - Pasukan Khusus  Inggris dikenal unggul di sejumlah bidang, tetapi  pasukan penembak jitunya mengambil posisi teratas sebagai  ahli penyamaran.",
                "date": "29/11/2020",
                "editor": "Editor Shintaloka Pradita Sicca",
                "headline": "Kemampuan Bersembunyi Pasukan Khusus Inggris, Bisakah Kamu Temukan?",
                "link": "https://www.kompas.com/global/read/2020/11/29/231741970/kemampuan-bersembunyi-pasukan-khusus-inggris-bisakah-kamu-temukan",
                "read count": "325203",
                "tag": "militer",
                "time": "23:17 WIB",
                "total comment": "32",
                "writer": "Penulis Shintaloka Pradita Sicca"
            },
            "1": {
                "category": "Nasional",
                "content": "Gonjang-ganjing Jelang Ganti Kapolri, Geng Solo, Makassar, Pejaten, dan Independen, Host & Produser Eksekutif Program AIMAN | AIMAN setiap senin, Pukul 20.00 WIB di KompasTV, KAPOLRI Jenderal Idham Aziz, akan segera memasuki masa pensiun pada Januari 2021 nanti. Meski bisa diperpanjang, tapi peluang untuk pergantian terbuka lebar.",
                "date": "30/11/2020",
                "editor": "Editor Heru Margianto",
                "headline": "Gonjang-ganjing Jelang Ganti Kapolri, Geng Solo, Makassar, Pejaten, dan Independen",
                "link": "https://nasional.kompas.com/read/2020/11/30/08444511/gonjang-ganjing-jelang-ganti-kapolri-geng-solo-makassar-pejaten-dan",
                "read count": "89950",
                "tag": "kapolri jenderal idham azis",
                "time": "08:44 WIB",
                "total comment": "17",
                "writer": "None"
            }
        }
    ],
    "date": "30-11-2020"
}

我已经orient='records'在转换为字典时使用了,但索引仍然存在,甚至成为字典本身。主要日期位于输出的底部而不是顶部。我想要的输出是这样的:

{
    "date": "30-11-2020",
    "data": [
        {
            "category": "Global",
            "content": "Kemampuan Bersembunyi Pasukan Khusus Inggris, Bisakah Kamu Temukan?, , LONDON, KOMPAS.com - Pasukan Khusus  Inggris dikenal unggul di sejumlah bidang, tetapi  pasukan penembak jitunya mengambil posisi teratas sebagai  ahli penyamaran.",
            "date": "29/11/2020",
            "editor": "Editor Shintaloka Pradita Sicca",
            "headline": "Kemampuan Bersembunyi Pasukan Khusus Inggris, Bisakah Kamu Temukan?",
            "link": "https://www.kompas.com/global/read/2020/11/29/231741970/kemampuan-bersembunyi-pasukan-khusus-inggris-bisakah-kamu-temukan",
            "read count": "325203",
            "tag": "militer",
            "time": "23:17 WIB",
            "total comment": "32",
            "writer": "Penulis Shintaloka Pradita Sicca"
        },
        {
            "category": "Nasional",
            "content": "Gonjang-ganjing Jelang Ganti Kapolri, Geng Solo, Makassar, Pejaten, dan Independen, Host & Produser Eksekutif Program AIMAN | AIMAN setiap senin, Pukul 20.00 WIB di KompasTV, KAPOLRI Jenderal Idham Aziz, akan segera memasuki masa pensiun pada Januari 2021 nanti. Meski bisa diperpanjang, tapi peluang untuk pergantian terbuka lebar.",
            "date": "30/11/2020",
            "editor": "Editor Heru Margianto",
            "headline": "Gonjang-ganjing Jelang Ganti Kapolri, Geng Solo, Makassar, Pejaten, dan Independen",
            "link": "https://nasional.kompas.com/read/2020/11/30/08444511/gonjang-ganjing-jelang-ganti-kapolri-geng-solo-makassar-pejaten-dan",
            "read count": "89950",
            "tag": "kapolri jenderal idham azis",
            "time": "08:44 WIB",
            "total comment": "17",
            "writer": "None"

        }
    ]
}

任何帮助,将不胜感激。

编辑:上面的输出不仅仅是 2 个字典/数据。所以它不能只删除“0”或“1”。

标签: pythonjsonflask

解决方案


那么你可以试试:

for i, subdict in enumerate(app['data']):
    for key in subdict.keys():
        for subkey in subdict[key].keys():
            app['data'][i][subkey] = subdict[key][subkey]
        del app['data'][i][key]

这会将您不需要的输出转换为您想要的输出。

它将遍历您的数据字典列表,并通过将不需要的键下的内容复制到该不需要的键的同一级别来删除一层降序树。然后它将删除不需要的密钥和相关内容。


推荐阅读