Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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 如何在写入CSV文件时从列表中选择适当的数据?_Python_Python 3.x - Fatal编程技术网

Python 如何在写入CSV文件时从列表中选择适当的数据?

Python 如何在写入CSV文件时从列表中选择适当的数据?,python,python-3.x,Python,Python 3.x,我正在编写一个脚本来对Meraki API进行API调用,并需要将某些值写入CSV文件。根据所附的屏幕截图,我可以从列表中选择某些信息,但与“timeSeries”无关,因为它似乎是一个不同的子部分 在将行写入CSV文件时,我能够选择网络、串行、上行链路和目标IP数据,但一旦我到达timeSeries,它将不会提取该信息,因为我不知道如何指定它。在执行json.loads(…),timeSeries将是dict的列表 print(type(latency["timeSeries"]))

我正在编写一个脚本来对Meraki API进行API调用,并需要将某些值写入CSV文件。根据所附的屏幕截图,我可以从列表中选择某些信息,但与“timeSeries”无关,因为它似乎是一个不同的子部分


在将行写入CSV文件时,我能够选择网络、串行、上行链路和目标IP数据,但一旦我到达timeSeries,它将不会提取该信息,因为我不知道如何指定它。

在执行
json.loads(…)
,timeSeries将是
dict
列表

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

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

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

...

您可以逐个硬编码所有索引(
[0]
[1]
,…),如果您事先知道索引的数量,也可以循环timeSeries列表的所有元素并构建要写入的dict值。

为什么不试试呢。读写以及选择要写的列更容易。
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()
print(type(latency["timeSeries"]))      
# <class 'list'>

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

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

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

# OR

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