Я новичок в питоне. Я пытаюсь извлечь данные из файла data.json.

Как я могу получить "Files_Names" и "project_name"? Кроме того, как манипулировать данными, «XX \ XX \ X» является дополнительной строкой.

Желание вывода:

File_Names = ih/1/2/3.java
             ihh/11/22/33.java.java
Project_name = android/hello
File_Names = hi/1/2/3.java
             hih/11/22/33.java.java
Project_name = android/helloworld

Data.json

{
    "changed": [
        {
            "prev_revision": "a09936ea19ddc9f69ed00a7929ea81234af82b95", 
            "added_commits": [
                {
                    "Lines_Deleted": 28, 
                    "File_Names": [
                        "1\t3\tih/1/2/3.java", 
                        "1\t1\tihh/11/22/33.java.java"
                    ], 
                    "Files_Modified": 8, 
                    "Lines_Inserted": 90
                }
            ], 
            "project_name": "android/hello"
        }, 
       {
            "prev_revision": "a09936ea19ddc9f69ed00a7929ea81234af82b95", 
            "added_commits": [
                {
                    "Lines_Deleted": 28, 
                    "File_Names": [
                        "14\t3\thi/1/2/3.java", 
                        "1\t1\thih/11/22/33.java.java"
                    ], 
                    "Files_Modified": 8, 
                    "Lines_Inserted": 90
                }
            ], 
            "project_name": "android/helloworld"
        }

    ]
}
1
Mihir 20 Авг 2018 в 22:54

3 ответа

Лучший ответ

import json затем используйте json.load(open('data.json')) для чтения файла. Он будет загружен в виде вложенной иерархии объектов Python (словари, списки, целые, строки, числа с плавающей запятой), которые вы можете анализировать соответствующим образом.

Вот что-то, чтобы зажечь ваше воображение и донести концепцию.

import json
x = json.load(open('data.json'))
for sub_dict in x['changed']:
    print('project_name', sub_dict['project_name'])

    for entry in sub_dict['added_commits']:
        print (entry['File_Names'])
3
Zach Estela 21 Авг 2018 в 19:58

Вы можете использовать что-то подобное с модулем json

import json
f = open("file_name.json", "r")
data = f.read()
jsondata = json.loads(data) 
print jsondata # all json file 

print jsondata["changed"] # list after dictionary 

print jsondata["changed"][0] # This will get you all you have in the first occurence within changed
 f.close()

Отсюда вы можете взять его дальше с любыми элементами, которые вы хотите от json.

1
Jim Todd 20 Авг 2018 в 20:08

Вы можете использовать этот подход

import json

with open('data.json') as json_file: 
    data = json.loads(json_file)
    for item in data['changed']:
        print(item['project_name'], item['added_commits']['File_Names'])
2
Emmanuel Mtali 20 Авг 2018 в 20:16
51937684