Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将复杂的Json转换为CSV_Python_Json_Csv - Fatal编程技术网

Python 将复杂的Json转换为CSV

Python 将复杂的Json转换为CSV,python,json,csv,Python,Json,Csv,该文件来自slack server导出文件,因此结构每次都会发生变化(如果人们用文本或反应响应线程) 我试过几个这样的问题,都有类似的问题。但我保证我的问题是不同的 示例JSON文件: "client_msg_id": "f347abdc-9e2a-4cad-a37d-8daaecc5ad51", "type": "message", "text": "I came here just to check <@U3QSFG5A4> Thi

该文件来自slack server导出文件,因此结构每次都会发生变化(如果人们用文本或反应响应线程)

我试过几个这样的问题,都有类似的问题。但我保证我的问题是不同的

示例JSON文件:

        "client_msg_id": "f347abdc-9e2a-4cad-a37d-8daaecc5ad51",
        "type": "message",
        "text": "I came here just to check <@U3QSFG5A4> This is a sample :slightly_smiling_face:",
        "user": "U51N464MN",
        "ts": "1550511445.321100",
        "team": "T1559JB9V",
        "user_team": "T1559JB9V",
        "source_team": "T1559JB9V",
        "user_profile": {
            "avatar_hash": "gcc8ae3d55bb",
            "image_72": "https:\/\/secure.gravatar.com\/avatar\/fcc8ae3d55bb91cb750438657694f8a0.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0026-72.png",
            "first_name": "A",
            "real_name": "a name",
            "display_name": "user",
            "team": "T1559JB9V",
            "name": "name",
            "is_restricted": false,
            "is_ultra_restricted": false
        },
        "thread_ts": "1550511445.321100",
        "reply_count": 3,
        "reply_users_count": 3,
        "latest_reply": "1550515952.338000",
        "reply_users": [
            "U51N464MN",
            "U8DUH4U2V",
            "U3QSFG5A4"
        ],
        "replies": [
            {
                "user": "U51N464MN",
                "ts": "1550511485.321200"
            },
            {
                "user": "U8DUH4U2V",
                "ts": "1550515191.337300"
            },
            {
                "user": "U3QSFG5A4",
                "ts": "1550515952.338000"
            }
        ],
        "subscribed": false,
        "reactions": [
            {
                "name": "trolldance",
                "users": [
                    "U51N464MN",
                    "U4B30MHQE",
                    "U68E6A0JF"
                ],
                "count": 3
            },
            {
                "name": "trollface",
                "users": [
                    "U8DUH4U2V"
                ],
                "count": 1
            }
        ]
    },

“客户信息id”:“f347abdc-9e2a-4cad-a37d-8daaecc5ad51”,
“类型”:“消息”,
“文本”:“我来这里只是为了检查这是一个样本:微微的笑脸:”,
“用户”:“U51N464MN”,
“ts”:“1550511445.321100”,
“团队”:“T1559JB9V”,
“用户团队”:“T1559JB9V”,
“源团队”:“T1559JB9V”,
“用户配置文件”:{
“阿凡达散列”:“gcc8ae3d55bb”,
“image\u 72”:“https:\/\/secure.gravatar.com\/avatar\/fcc8ae3d55bb91cb750438657694f8a0.jpg?s=72&d=https%3A%2F%2Fa.slack edge.com%2Fdf10d%2Fimg%2Favatars%2Fava\u 0026-72.png”,
“名字”:“A”,
“真实姓名”:“姓名”,
“显示名称”:“用户”,
“团队”:“T1559JB9V”,
“名称”:“名称”,
“is_restricted”:false,
“是否超限制”:false
},
“螺纹”:“1550511445.321100”,
“答复计数”:3,
“回复用户数”:3,
“最新回复”:“1550515952.338000”,
“回复用户”:[
“U51N464MN”,
“U8DUH4U2V”,
“U3QSFG5A4”
],
“答复”:[
{
“用户”:“U51N464MN”,
“ts”:“1550511485.321200”
},
{
“用户”:“U8DUH4U2V”,
“ts”:“1550515191.337300”
},
{
“用户”:“U3QSFG5A4”,
“ts”:“1550515952.338000”
}
],
“签署”:假,
“反应”:[
{
“名称”:“巨魔之舞”,
“用户”:[
“U51N464MN”,
“U4B30MHQE”,
“U68E6A0JF”
],
“计数”:3
},
{
“姓名”:“巨魔脸”,
“用户”:[
“U8DUH4U2V”
],
“计数”:1
}
]
},

问题是,有几个键是不同的,因此消息之间的相同json文件中的结构会根据其他用户与给定消息的交互方式而变化。

您需要csv文件格式做什么,请告诉我您的应用程序,以便我可以帮助您。“但我保证我的问题是不同的。”:这还不够,详细解释为什么其他答案不符合您的需要。您的问题和显示您的尝试和强制显示您预期的
CSV
输出。@Deanvangreuen我想分析对话的内容,然后创建一个数据库,其中的问题已被询问和回答。

with open("file.json") as file:
    d = json.load(file)

df = pd.io.json.json_normalize(d)

df.columns = df.columns.map(lambda x: x.split(".")[-1])