Чтение файла Excel, получение данных столбца, использование данных столбца для извлечения данных из JSON и сохранение их в том же Excel - PullRequest
0 голосов
/ 12 июня 2018

Я создал скрипт Python для чтения данных из JSON и сохранения определенных полей в файл Excel.У меня есть другой файл JSON в следующем формате:

{
    "001d2bd5": {
        "EndpointMap": {
            "12167491": {
                "Ep_config_url": "",
                "Ep_dhcp": null,
                "Ep_dhcp_version": 0,
                "Ep_gw": "",
                "Ep_host": "",
                "Ep_host_uuid": "",
                "Ep_id": "epNw2.2.2.2/26",
                "Ep_ip": "2.2.2.2",
                "Ep_mac": "",
                "Ep_name": "",
                "Ep_nameserver": "",
                "Ep_netmask": "255.255.255.192",
                "Ep_ops": "",
                "Ep_port": "",
                "Ep_sg_id": "001d2bd5",
                "Ep_status": "active",
                "Ep_type": "external",
                "Ep_uuid": "12167491"
            }
        },
        "Mutex": {},
        "Sg": {
            "EnableDHCP": true,
            "Encrypt": false,
            "External": true,
            "Name": "VN2",
            "PrefixGroup": false,
            "Uuid": "001d2bd5"
        },
        "SgToSgDstMap": {
            "5e881630": true
        },
        "SgToSgSrcMap": {}
    },
    "0448d01f": {
        "EndpointMap": {
            "82e4a911": {
                "Ep_config_url": "",
                "Ep_dhcp": null,
                "Ep_dhcp_version": 0,
                "Ep_gw": "",
                "Ep_host": "",
                "Ep_host_uuid": "",
                "Ep_id": "epNw3.3.3.3/23",
                "Ep_ip": "3.3.3.3",
                "Ep_mac": "",
                "Ep_name": "",
                "Ep_nameserver": "",
                "Ep_netmask": "255.255.254.0",
                "Ep_ops": "",
                "Ep_port": "",
                "Ep_sg_id": "0448d01f",
                "Ep_status": "active",
                "Ep_type": "external",
                "Ep_uuid": "82e4a911"
            }
        },
        "Mutex": {},
        "Sg": {
            "EnableDHCP": true,
            "Encrypt": false,
            "External": true,
            "Name": "ISG",
            "PrefixGroup": false,
            "Uuid": "0448d01f"
        },
        "SgToSgDstMap": {
            "23840de2": true,
            "8260f374": true,
            "c83217fc": true
        },
        "SgToSgSrcMap": {
            "28717b76": true,
            "73e864c0": true
        }

Вот как начинается JSON, и это его часть.Я хочу взять один столбец из вышеприведенного листа Excel, сохранить его в списке, а затем повторить его через часть Mutex этого JSON, чтобы получить имя и сохранить его как новый столбец в том же Excel.В настоящее время это мой код:

#!/usr/bin/python
import xlwt
import json
from xlutils.copy import copy
import xlrd
import os.path
import openpyxl
import pandas as pd

with open('ep.txt', 'r') as f:
    js = json.loads(f.read())

book = xlwt.Workbook(encoding="utf-8")

sheet1 = book.add_sheet("Sheet 1", cell_overwrite_ok=True)


sheet1.write(0, 0, 'Ep_sg_id')
sheet1.write(1, 0, 'Ep_ip')
sheet1.write(2, 0, 'Ep_netmask')

p = 1

for i, j in js.items():
    sg_id = js[i]['Ep_sg_id']
    ip = js[i]['Ep_ip']
    netmask = js[i]['Ep_netmask']

    sheet1.write(p, 0, sg_id)
    sheet1.write(p, 1, ip)
    sheet1.write(p, 2, netmask)
    p = p + 1
book.save('js_excel.xls')

df = pd.read_excel('js_excel.xls', sheetname=0)
mylist = df['Ep_sg_id'].tolist()
print mylist

Я не могу перебрать список по JSON.

Список содержит Uuid, и мне нужно получить имя и сохранить его вExcel.

"Mutex": {},
        "Sg": {
            "EnableDHCP": true,
            "Encrypt": false,
            "External": true,
            "Name": "VN2",
            "PrefixGroup": false,
            "Uuid": "001d2bd5"

PS: Для сгенерированного листа Excel ("js_excel.xls") я хочу сгруппировать данные по "Ep_sg_id", так как они могут иметь несколько "Ep-ip".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...