[英]How to show specific attribute from json file and write into another json file using Python?
關於從json文件檢索屬性,我遇到了一些問題。 執行腳本后出現此錯誤消息
AttributeError: 'list' object has no attribute 'values'
我的密碼
import json
githubusers_data_path = 'githubusers.json'
githubusers_file = open(githubusers_data_path, "r")
githubusers_string = ''.join(line for line in githubusers_file)
githubusers_string = '[{}]'.format(githubusers_string)
githubusers_data = json.loads(githubusers_string)
for val in githubusers_data.values():
print val["login"]
然后,我要用此期望的輸出(必須有換行)重寫現有文件(output.json)。
{"login": "crynobone"}
{"login": "syamilmj"}
{"login": "kamal"}
{"login": "datomnurdin"}
{"login": "ejamesc"}
{"login": "kagesenshi"}
{"login": "soggie"}
{"login": "aizatto"}
{"login": "mahmudahsan"}
{"login": "erikdubbelboer"}
...
原始數據
{
"login": "datomnurdin",
"id": 5416242,
"avatar_url": "https://avatars.githubusercontent.com/u/5416242?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/datomnurdin",
"html_url": "https://github.com/datomnurdin",
"followers_url": "https://api.github.com/users/datomnurdin/followers",
"following_url": "https://api.github.com/users/datomnurdin/following{/other_user}",
"gists_url": "https://api.github.com/users/datomnurdin/gists{/gist_id}",
"starred_url": "https://api.github.com/users/datomnurdin/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/datomnurdin/subscriptions",
"organizations_url": "https://api.github.com/users/datomnurdin/orgs",
"repos_url": "https://api.github.com/users/datomnurdin/repos",
"events_url": "https://api.github.com/users/datomnurdin/events{/privacy}",
"received_events_url": "https://api.github.com/users/datomnurdin/received_events",
"type": "User",
"site_admin": false,
"score": 1.0
}, {
"login": "ejamesc",
"id": 337175,
"avatar_url": "https://avatars.githubusercontent.com/u/337175?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/ejamesc",
"html_url": "https://github.com/ejamesc",
"followers_url": "https://api.github.com/users/ejamesc/followers",
"following_url": "https://api.github.com/users/ejamesc/following{/other_user}",
"gists_url": "https://api.github.com/users/ejamesc/gists{/gist_id}",
"starred_url": "https://api.github.com/users/ejamesc/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/ejamesc/subscriptions",
"organizations_url": "https://api.github.com/users/ejamesc/orgs",
"repos_url": "https://api.github.com/users/ejamesc/repos",
"events_url": "https://api.github.com/users/ejamesc/events{/privacy}",
"received_events_url": "https://api.github.com/users/ejamesc/received_events",
"type": "User",
"site_admin": false,
"score": 1.0
},...
import json
githubusers_data_path = 'data.txt'
githubusers_file = open(githubusers_data_path, "r")
githubusers_string = ''.join(line for line in githubusers_file)
githubusers_string = '[{}]'.format(githubusers_string)
githubusers_data = json.loads(githubusers_string)
out = open( 'output.txt', 'w' )
for val in githubusers_data:
dict = {}
dict['login'] = val["login"]
out.write( json.dumps(dict) + '\n' )
out.close()
輸出:
{"login": "datomnurdin"}
{"login": "ejamesc"}
...
您可以使用以下代碼來實現:
githubusers_data_path = 'githubusers.json'
githubusers_file = open(githubusers_data_path, "r")
githubusers_string = ''.join(line for line in githubusers_file)
githubusers_string = '[{}]'.format(githubusers_string)
githubusers_data = json.loads(githubusers_string)
for val in githubusers_data:
print '{"%s": "%s"}' % ("login", val["login"])
logins = "\n".join(map(lambda u: '{"login": "%s"}' % u['login'], githubusers_data))
open("logins.txt", "w").write(logins)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.