格式化字典输出python2

2024-09-29 23:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Web服务器,当你卷曲日志时,它会给出下面的示例数据

curl http://10.10.10.10.server1.com/logs

结果

[{"Database":"Database2","Version":"0.1.2","Day_time":329477060,"My_count":102075020,"ProjectID":55358627,"Final_time":46716393},
{"Database":"Database200","Version":"0.1.0","Day_time":5167727780,"My_count":4724597678,"ProjectID":1708358878,"Final_time":3016238800},
{"Database":"Database1","Version":"1.1.1","Day_time":1647140700,"My_count":7833711472,"ProjectID":5241471510,"Final_time":2592239962},
{"Database":"Database201","Version":"0.2.2","Day_time":2490677104,"My_count":7525799955,"ProjectID":1849565089,"Final_time":5676234866},
{"Database":"Cache1","Version":"1.2.2","Day_time":6877694221,"My_count":7403116508,"ProjectID":3260475032,"Final_time":4142641476},
{"Database":"Database201","Version":"1.2.1","Day_time":8285487311,"My_count":2970023201,"ProjectID":2956709247,"Final_time":13313954},
{"Database":"Database202","Version":"0.0.1","Day_time":5032945971,"My_count":2453463265,"ProjectID":932154161,"Final_time":1521309104},
{"Database":"Database202","Version":"1.2.1","Day_time":6440876717,"My_count":609847918,"ProjectID":364440252,"Final_time":245407666},
{"Database":"Cache1","Version":"0.0.3","Day_time":2265003223,"My_count":7311023147,"ProjectID":4612143282,"Final_time":2698879865},
{"Database":"Database202","Version":"0.0.1","Day_time":8743007122,"My_count":7687687281,"ProjectID":4160318641,"Final_time":3527368640},
{"Database":"Cache1","Version":"1.1.2","Day_time":9281660375,"My_count":4028121672,"ProjectID":3240617982,"Final_time":787503690}]

我想从这个日志中获取数据库、版本和最终时间

下面是我的代码

from urllib2 import Request, urlopen, URLError
import json

# Read file, Execute REST api request then parse output

file = open("list_0f_servers.txt")
for host in hosts:
    link = 'http://%s.server1.com/logs' % (server)
    requestLink = Request(link)
    try:
        requestResponse = urlopen(requestLnk)
        resultJson = responseResponse.read()
        resultArray = []
        jsonData = json.loads(resultJson)
        for dict in jsonData:
            tempDict = {}
            for key, val in dict.iteritems():
                if key.find('Database') != -1 or key.find('Version') != -1 or key.find('Final_time') != -1:
                    tempDict[key] = val
            resultArray.append(tempDict)
            print tempDict
    except URLError, e:
        print 'Got an error code:', e
file.close()

我能设法得到低于预期的结果

{u'Database': u'Webapp1', u'Version': u'1.1.0', u'Final_time': 5729616276}
{u'Database': u'Cache0', u'Version': u'0.0.1', u'Final_time': 412280130}
{u'Database': u'Cache2', u'Version': u'0.1.1', u'Final_time': 967336228}
{u'Database': u'Cache0', u'Version': u'1.1.2', u'Final_time': 4443384438}
{u'Database': u'Database1', u'Version': u'0.2.2', u'Final_time': 782303822}
{u'Database': u'Cache0', u'Version': u'0.2.1', u'Final_time': 1490849761}
{u'Database': u'Webapp2', u'Version': u'1.1.2', u'Final_time': 4874374574}

但是我想把它格式化成更易于人阅读的格式,就像下面这样,然后把我的文件写出来。所以它应该显示输出并将其写入文件

Database Webapp1 Version 1.1.0 Final_time 5729616276
Database Cache0 Version 0.0.1 Final_time 412280130
Database Cache2 Version 0.1.1 Final_time 967336228
Database Cache0 Version 1.1.2 Final_time 4443384438
Database Database1 Version 0.2.2 Final_time 782303822
Database Cache0 Version 0.2.1 Final_time 1490849761
Database Webapp2 Version 1.1.2 Final_time 4874374574 

非常感谢您的帮助。谢谢


Tags: keyinfortimeversionmycountdatabase
3条回答

您可以执行以下操作:

out = ['ProjectID', 'My_count', 'Date_time']
print(" ".join(["{} {}".format(k, v) for k, v in x.items() if k not in out]))

对于Python 2:

print " ".join(["{} {}".format(k, v) for k, v in x.iteritems() if k not in out])

你喜欢这个工作吗

def prettify(d, exclude=['ProjectID', 'My_count', 'Date_time']):
    res = ''

    for k, v in d.items():
        if k in exclude:
            continue
        res += ' {} {}'.format(k, v)
    return res

如果要按特定顺序从字典中提取字段,最好列出所需的键,而不是不需要的键(与前面两个答案提出的方法相反)。所以我建议:

dicts = [{"Database":"Database2","Version":"0.1.2","Day_time":329477060,"My_count":102075020,"ProjectID":55358627,"Final_time":46716393}, "Database":"Database200","Version":"0.1.0","Day_time":5167727780,"My_count":4724597678,"ProjectID":1708358878,"Final_time":3016238800}, "Database":"Database1","Version":"1.1.1","Day_time":1647140700,"My_count":7833711472,"ProjectID":5241471510,"Final_time":2592239962},{"Database":"Database201","Version":"0.2.2","Day_time":2490677104,"My_count":7525799955,"ProjectID":1849565089,"Final_time":5676234866},{"Database":"Cache1","Version":"1.2.2","Day_time":6877694221,"My_count":7403116508,"ProjectID":3260475032,"Final_time":4142641476},{"Database":"Database201","Version":"1.2.1","Day_time":8285487311,"My_count":2970023201,"ProjectID":2956709247,"Final_time":13313954},{"Database":"Database202","Version":"0.0.1","Day_time":5032945971,"My_count":2453463265,"ProjectID":932154161,"Final_time":1521309104},{"Database":"Database202","Version":"1.2.1","Day_time":6440876717,"My_count":609847918,"ProjectID":364440252,"Final_time":245407666},{"Database":"Cache1","Version":"0.0.3","Day_time":2265003223,"My_count":7311023147,"ProjectID":4612143282,"Final_time":2698879865}, "Database":"Database202","Version":"0.0.1","Day_time":8743007122,"My_count":7687687281,"ProjectID":4160318641,"Final_time":3527368640}, "Database":"Cache1","Version":"1.1.2","Day_time":9281660375,"My_count":4028121672,"ProjectID":3240617982,"Final_time":787503690}]

keys = "Database Version Final_time".split()
result = '\n'.join(' / '.join(("%s %s" % (k,d[k]) for k in keys)) for d in dicts)
print(result)

结果:

Database Database2 / Version 0.1.2 / Final_time 46716393
Database Database200 / Version 0.1.0 / Final_time 3016238800
Database Database1 / Version 1.1.1 / Final_time 2592239962
Database Database201 / Version 0.2.2 / Final_time 5676234866
Database Cache1 / Version 1.2.2 / Final_time 4142641476
Database Database201 / Version 1.2.1 / Final_time 13313954
Database Database202 / Version 0.0.1 / Final_time 1521309104
Database Database202 / Version 1.2.1 / Final_time 245407666
Database Cache1 / Version 0.0.3 / Final_time 2698879865
Database Database202 / Version 0.0.1 / Final_time 3527368640
Database Cache1 / Version 1.1.2 / Final_time 787503690

注意:为了更好的可读性,我添加了斜杠/,但是如果您不想/不需要它们,可以在join语句中删除它

相关问题 更多 >

    热门问题