簡體   English   中英

寫入CSV文件時如何從列表中選擇合適的數據?

[英]How to select appropriate data from a list when writing to a CSV file?

我正在編寫一個腳本來對 Meraki API 進行 API 調用,並且需要將某些值寫入 CSV 文件。 鑒於附加的屏幕截圖,我已經能夠從我的列表中選擇某些信息,但與“timeSeries”沒有任何關系,因為它似乎是一個不同的子部分。

JSON

latency_measure = json.loads(session.get('https://api.meraki.com/api/v0/organizations/' + ORG_ID + '/uplinksLossAndLatency', headers=headers).text)
def latency_measure_info(latency_measure):
    csv_file1 = open(name + ' appliances -' + str(today) + '.csv', 'w', encoding='utf-8')
    fieldnames = ['Network', 'Serial', 'Uplink', 'Destination IP', 'Test 1 Date/Time', 'Test 1 Loss Percent', 'Test 1 Latency', 'Test 2 Date/Time', 'Test 2 Loss Percent', 'Test 2 Latency', 'Test 3 Date/Time', 'Test 3 Loss Percent', 'Test 3 Latency', 'Test 4 Date/Time', 'Test 4 Loss Percent', 'Test 4 Latency']
    writer = csv.DictWriter(csv_file1, fieldnames=fieldnames, restval='')
    writer.writeheader()
    for latency in latency_measure: 
        if (network_id in network_id_list): 
            network_name = get_network_name(latency['networkId'], networks)
writer.writerow({'Network': network_name, 'Serial': latency['serial'], 'Uplink': latency['uplink'], 'Destination IP': latency['ip'], 'Test 1 Loss Percent': latency['timeSeries'['lossPercent']], 'Test 1 Latency': latency['latencyMs'], 'Test 2 Date/Time': latency['ts'], 'Test 2 Loss Percent': latency['lossPercent'], 'Test 2 Latency': latency['latencyMs'], 'Test 3 Date/Time': latency['ts'], 'Test 3 Loss Percent': latency['lossPercent'], 'Test 3 Latency': latency['latencyMs'], 'Test 4 Date/Time': latency['ts'], 'Test 4 Loss Percent': latency['lossPercent'], 'Test 4 Latency': latency['latencyMS']})
csv_file1.close()

將行寫入 CSV 文件時,我能夠挑選出網絡、串行、上行鏈路和目標 IP 數據,但是一旦我到達 timeSeries,它就不會提取該信息,因為我不知道如何指定它。

在你執行json.loads(..) ,“timeSeries”將是一個dict list

print(type(latency["timeSeries"]))      
# <class 'list'>

print(type(latency["timeSeries"][0]))
# <class 'dict'>

print(type(latency["timeSeries"][1]))
# <class 'dict'>

...

首先通過索引訪問list的每個元素,然后使用鍵訪問dict的鍵值對。

latency["timeSeries"][0]["ts"]
latency["timeSeries"][0]["lossPercent"]
latency["timeSeries"][0]["latencyMs"]

# OR

timeSeries0 = latency["timeSeries"][0]
timeSeries0["ts"]
timeSeries0["lossPercent"]
timeSeries0["latencyMs"]

如果您事先知道它們有多少,您可以對所有索引 ( [0] , [1] ,..) 進行硬編碼,或者您可以循環 timeSeries 列表的所有元素並構建 dict 值你想寫。

暫無
暫無

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

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