Python: Write JSON dictionary values to a JSON file
我试图:
然而,当我试图将密钥对转储到新的.json文件时,它只打印最后一个字典密钥对。有人知道如何遍历每个字典并附加密钥对吗?我尝试过一些方法,但我似乎不知道我遗漏了什么和在哪里。
这是我的代码:
1 2 3 4 5 6 7 8 9 10 11 | with open(join(dirname(__file__),'text.json')) as tone_json: python_obj = json.load(tone_json) #read file object into string my_list = python_obj["data"] #assign list name to string for dictionary in my_list: #loop through dictionaries in list for key,value in dictionary.items(): #loop through key pairs in dictionaries if key =="text": with open('comments.json', 'w') as f: json.dump("{}: {}".format(key,value), f) #write key pair objects as json formatted stream to json file f.write(' ') |
我的JSON文件示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | { "data": [ { "text":"apple", "created_time":"2017-12-23", "comment_count": 154, "like_count": 856, "id":"1015595299xxxxx" }, { "text":"orange", "created_time":"2017-12-04", "comment_count": 13, "like_count": 437, "id":"10155952xxxxx" }, { "text":"grapes", "created_time":"2017-12-04", "comment_count": 12, "like_count": 163, "id":"1015595299xxxxx" } ] } |
我的电流输出:
1 | "text: grapes" |
但是,我想遍历每个字典,最终只打印每个"文本"键的值。
预期输出:
1 2 3 | "text: apple" "text: orange" "text: grapes" |
任何提示都有帮助!谢谢!
您已在
来自DOCS:
1。W'仅用于写入(具有相同名称的现有文件将被删除)
2。a'打开文件进行附加;写入文件的任何数据都会自动添加到末尾
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Python 3.6.5 (default, Mar 30 2018, 06:42:10) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin Type"help","copyright","credits" or"license" for more information. >>> my_list = [{u'created_time': u'2017-12-23', u'text': u'apple', u'comment_count': 154, u'like_count': 856, u'id': u'1015595299xxxxx'}, {u'created_time': u'2017-12-04', u'text': u'orange', u'comment_count': 13, u'like_count': 437, u'id': u'10155952xxxxx'}, {u'created_time': u'2017-12-04', u'text': u'grapes', u'comment_count': 12, u'like_count': 163, u'id': u'1015595299xxxxx'}] >>> import json >>> my_list = [{u'created_time': u'2017-12-23', u'text': u'apple', u'comment_count': 154, u'like_count': 856, u'id': u'1015595299xxxxx'}, {u'created_time': u'2017-12-04', u'text': u'orange', u'comment_count': 13, u'like_count': 437, u'id': u'10155952xxxxx'}, {u'created_time': u'2017-12-04', u'text': u'grapes', u'comment_count': 12, u'like_count': 163, u'id': u'1015595299xxxxx'}] >>> for d in my_list: ... for key, value in d.items(): ... if key =="text": ... with open('comments.json', 'a') as f: # Append mode here ... json.dump("{}: {}".format(key,value), f) ... f.write(' ') ... |
1 2 3 | "text: apple" "text: orange" "text: grapes" |
python中的文件模式,
1 2 3 4 5 6 7 8 | 'r' open for reading (default) 'w' open for writing, truncating the file first 'x' open for exclusive creation, failing if the file already exists 'a' open for writing, appending to the end of the file if it exists 'b' binary mode 't' text mode (default) '+' open a disk file for updating (reading and writing) 'U' universal newlines mode (deprecated) |
如果我对你的理解正确,这应该是你想要的:
1 2 3 4 | with open('comments.json', 'a') as f: json.dump("{}: {}".format(key,value), f) #write key pair objects as json formatted stream to json file f.write(' ') |
只需将"w"更改为"a",这样就不会覆盖,而是追加到文件中