让json.load()
函数的for
循环读取“alarmst”字段并返回它们的值时遇到问题。你知道吗
我在问题代码上面有一个工作代码,它可以很好地处理相同的数据,得到“tag”字段的数据值。你知道吗
我认为这可能与dataStatus
和dataStart
具有带分号的时间格式数据有关,即(2015-12-10T05:59:03Z
),因此在运行writerow()
函数之前,我不确定如何解析这些字符或替换循环中值中的字符,或者如果有人知道更好的方法来告诉它这些特定字段的值的数据类型是Date
或者类似Python的显式类型。你知道吗
import json
import csv
with open('C:\\folder\\dev\\Tags.txt',"r") as file:
data = json.load(file)
with open('C:\\folder\\dev\\Tags.csv',"w",newline='') as file:
csv_file = csv.writer(file)
for dev in data["devs"]:
for tag in dev["tags"]:
csv_file.writerow([tag['id'], tag['name'], tag['dataType'], tag['description'], tag['alarm'], tag['value'], tag['quality'], tag['DevTagId']])
import json
import csv
with open('C:\\folder\\dev\\TagAlarms.txt',"r") as file:
data = json.load(file)
with open('C:\\folder\\dev\\TagAlarms.csv',"w",newline='') as file:
csv_file = csv.writer(file)
for dev in data["devs"]:
for tag in dev["tags"]:
for alarm in tag["alarmst"]:
csv_file.writerow(alarm['dateStatus'],[alarm['dateStart'], alarm['status'], alarm['type']])
csv_file.writerow(alarm['dateStatus'], [alarm['dateStart'], alarm['status'], alarm['type']])
TypeError: string indices must be integers
{
"success": true,
"moreDataAvailable": true,
"devs": [
{
"id": 111111,
"name": "dev123",
"tags": [
{
"id": 10100,
"name": "CleanTask",
"dataType": "Bool",
"description": "",
"alarmHint": "",
"value": 0,
"quality": "good",
"alarmst": {
"dateStatus": "2016-11-08T06:58:06Z",
"dateStart": "2016-11-08T06:22:16Z",
"status": "RTN",
"type": "None"
},
你的问题是:
请注意,在您的数据中,
alarmst
的值是一个JSON对象,在python中它被翻译成一个字典。因此,当您在它上面迭代时,您将得到键:即alarm
将是"dateStatus", "dateStart", "status", ...
。你知道吗替换为:
相关问题 更多 >
编程相关推荐