Python 从列表内部打印字典会在每行上放置一个字符
是的,还有一个。我想不出问题出在哪里。我试图遍历一个列表,该列表是API调用的JSON输出的一个子部分 这是我正在处理的JSON部分:Python 从列表内部打印字典会在每行上放置一个字符,python,json,Python,Json,是的,还有一个。我想不出问题出在哪里。我试图遍历一个列表,该列表是API调用的JSON输出的一个子部分 这是我正在处理的JSON部分: [ { "created_at": "2017-02-22 17:20:29 UTC", "description": "", "id": 1, "label": "FOO", "name": "FOO", "title": "FOO", "u
[
{
"created_at": "2017-02-22 17:20:29 UTC",
"description": "",
"id": 1,
"label": "FOO",
"name": "FOO",
"title": "FOO",
"updated_at": "2018-12-04 16:37:09 UTC"
}
]
我正在运行的代码将检索并显示此内容:
#/usr/bin/python
导入json
导入系统
尝试:
导入请求
除恐怖外:
打印“请安装python请求模块”
系统出口(-1)
星期六https://satellite6.example.com/api/v2/'
USERNAME=“admin”
PASSWORD=“PASSWORD”
SSL_VERIFY=False#暂时忽略SSL
def get_json(url):
#使用传递的URL位置执行GET
r=requests.get(url,auth=(用户名,密码),verify=SSL\u verify)
返回r.json()
def get_结果(url):
jsn=获取json(url)
如果jsn.get('error'):
打印“错误:+jsn['Error']['message']
其他:
如果jsn.get('results'):
返回jsn['results']
elif“结果”不在jsn中:
返回jsn
其他:
打印“未找到结果”
一无所获
def显示所有结果(url):
结果=获取结果(url)
如果结果是:
返回json.dumps(结果,缩进=4,排序键=True)
def main():
orgs=显示所有结果(KATELLO_API+“organizations/”)
对于组织中的组织:
印刷组织
如果名称=“\uuuuu main\uuuuuuuu”:
main()
我似乎缺少一个概念,因为当我打印org
时,每行都会得到一个字符,例如
[
{
"
c
r
e
a
t
e
d
_
a
t
"
它一直到最后一个]
我还尝试打印org['name']
,它抛出TypeError:列表索引必须是整数,而不是str-Python
错误。这让我认为,org
被看作是一个列表,而不是一个字典,我认为这是由于[{…}]
格式
我遗漏了什么概念
编辑:对我为什么没有得到这一点的解释:我正在使用中的一个脚本,我正在使用该脚本创建另一个脚本。我基本上是边走边学。Orgs是json.dump的结果,它生成一个字符串。因此,与此代码不同:
for org in orgs:
print(org)
将其替换为:
#for org in orgs:
print(orgs)
display\u all\u results
返回字符串,因为您在json.dumps(results,indent=4,sort\u keys=True)
,它将字典转换为字符串(您从get\u json
函数中的r.json()
获取字典)
然后在main
中迭代该字符串的字符,每行可以看到一个字符
相反,只需从显示所有结果返回结果
,代码将按预期工作
def display_all_results(url):
#results is already a dictionary, just return it
results = get_results(url)
if results:
return results
谢谢就这样。我不熟悉json.dumps
(或者大部分python),所以我缺少了这个概念。