我有一个要解析的文件。它有json格式的数据,但文件不是json文件。我想遍历该文件,并拉出totalReplyCount大于0的ID。在
{ "totalReplyCount": 0,
"newLevel":{
"main":{
"url":"http://www.someURL.com",
"name":"Ronald Whitlock",
"timestamp":"2016-07-26T01:22:03.000Z",
"text":"something great"
},
"id":"z12wcjdxfqvhif5ee22ys5ejzva2j5zxh04"
}
},
{ "totalReplyCount": 4,
"newLevel":{
"main":{
"url":"http://www.someUR2L.com",
"name":"other name",
"timestamp":"2016-07-26T01:22:03.000Z",
"text":"something else great"
},
"id":"kjsdbesd2wd2eedd23rf3r3r2e2dwe2edsd"
}
},
我最初的尝试是
^{pr2}$但我有个错误
TypeError: 'file' object has no attribute 'getitem'
我知道这只是一次打印尝试,并没有做我想做的事情,但我是python的新手,对自己做错了什么感到茫然。正确的方法是什么?对于ID,我的最终结果应该如下所示:
['insdisndiwneien23e2es', 'lsndion2ei2esdsd',....]
编辑1-2016年7月26日
我看到我在复制代码时在格式上犯了一个错误(很晚了,我很累…)。转换成JSON格式更合适。这个新编辑与我正在分析的文件完全匹配。然后我尝试用JSON解析它,得到ValueError: Extra data: line 2 column 1 - line X column 1
:,其中X行是行的末尾。在
def readCsv(filename):
with open(filename, 'r') as file:
data=json.load(file)
pprint(data)
我也试过听写器,得到了KeyError: 'totalReplyCount'
。这本词典没有订吗?在
编辑2-2016年7月27日
在休息了一下,回到它,并仔细考虑之后,我意识到我所拥有的(在适当地处理数据之后)是一个CSV文件,每一行都包含一个适当的JSON对象。因此,我必须解析CSV文件,然后解析每一行,这是一个顶级的、完整的JSON对象。我用来分析的代码如下所示,但是我得到的只是第一个字符串字符,一个大括号{':
def readCsv(filename):
with open(filename, 'r') as csvfile:
for row in csv.DictReader(csvfile):
for item in row:
print item[0]
我猜DictReader正在将json对象转换为字符串,这就是为什么我只得到一个大括号,而不是第一个键。如果我要做print item[0:5]
我会在每一行中以无序的方式得到前4个字符的混合,我想这是因为格式已经变成了一个无序的列表?我想我对我的问题有了一点更好的理解,但是我仍然在思考数据结构和用于解析它们的方法。我错过了什么?在
如错误所述,您的
csvFile
是一个file
对象,它不是dict
对象,因此您无法从中获取项。在如果您的
csvFile
是CSV格式,则可以使用csv模块将CSV的每一行读入dict:注意来自csv模块的
DictReader
方法,它将读取您的csv行并将其解析为dict对象如果您的输入文件是JSON,为什么不直接使用JSON库解析它,然后在该数据上运行for循环呢。然后只需迭代键并提取数据。在
Parsing values from a JSON file using Python?
看看贾斯汀的回答。应该有帮助。在
读完问题和以上所有答案后,请检查这对你是否有用。在
我认为输入文件是简单文件,而不是csv或json文件。在
代码流程如下:
可以添加更多检查点。在
相关问题 更多 >
编程相关推荐