首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JSON的python循环,而不是手动打印每个匹配

使用JSON的python循环,而不是手动打印每个匹配
EN

Stack Overflow用户
提问于 2015-05-09 20:38:29
回答 2查看 167关注 0票数 1

我已经成功地编写了一个脚本,从json文件中提取信息,并以我可以使用的方式解析它,但我现在必须手动打印每个字符串。如果可能的话,我想循环一下,但是我想从哪里开始呢?

Python

代码语言:javascript
运行
复制
from __future__ import print_function
import json
import sys
from pprint import pprint

with open('screen.json') as data_file:    
    data = json.load(data_file)

#json_file.close()

# Print all json data
#pprint(data)
#screen_list = data['screen']
print ("Screens availble",len (data['screen']))

#pprint(data["screen"][1]["id"])
#pprint(data["screen"][1]["user"])
#pprint(data["screen"][1]["password"])
#pprint(data["screen"][1]["code"])


#How to loop this 

print ("https://",data["screen"][0]["server"],"/test/test.php?=",data["screen"][0]["code"],sep='')
print ("https://",data["screen"][1]["server"],"/test/test.php?=",data["screen"][1]["code"],sep='')
print ("https://",data["screen"][2]["server"],"/test/test.php?=",data["screen"][2]["code"],sep='')

JSON

代码语言:javascript
运行
复制
   {
    "screen": [
        {
            "id": "1",
            "user": "user1@example.com",
        "password": "letmein",
        "code": "123456",
        "server": "example.com"
        },
        {
            "id": "2",
            "user": "user2@example.com",
        "password": "letmein",
        "code": "123455",
        "server": "example.com"
        },
        {
            "id": "3",
            "user": "user3@example.com",
        "password": "letmein",
        "code": "223456",
        "server": "example.com"
        }
    ]
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-09 20:43:39

您可以遍历dicts列表:

代码语言:javascript
运行
复制
for d in data["screen"]:
    print ("https://",d["server"],"/test/test.php?=",d["code"],sep='')

退出:

代码语言:javascript
运行
复制
https://example.com/test/test.php?=123456
https://example.com/test/test.php?=123455
https://example.com/test/test.php?=223456
票数 0
EN

Stack Overflow用户

发布于 2015-05-09 20:43:57

您已经将data['screen']提取到一个名为screen_list的变量中。这个变量是一个list,所以您可以和其他列表一样使用它--调用它上的len、索引它或在上面循环。所以:

代码语言:javascript
运行
复制
screen_list = data['screen']
print("Screens availble", len(screen_list))

for screen in screen_list:
    pprint(screen['id'])
    pprint(screen['user'])
    pprint(screen['password'])
    pprint(screen['code'])

下面,再循环一遍:

代码语言:javascript
运行
复制
for screen in screen_list:
    print("https://", screen["server"], "/test/test.php?=", screen["code"], sep='')

(我假设你想打印出所有屏幕的信息,然后打印出所有的URL。如果您想在打印信息的同时打印每个URL,只需将它们合并到一个循环中。)

顺便提一下,这是学习字符串格式的好时机。如果您想使用这些URL,例如,将它们传递给urllib2requests,您不能只打印出来,您必须将它们转换成字符串。即使您只是想打印出来,格式化通常更容易阅读,更难出错。所以:

代码语言:javascript
运行
复制
print("https://{}/test/test.php?={}".format(screen["server"], screen["code"]))

…或…

代码语言:javascript
运行
复制
print("https://{server}/test/test.php?={code}".format(**screen))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30144774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档