【问题标题】:pm4py printing event logs pretty (with pprint library)pm4py 打印事件日志漂亮(使用 pprint 库)
【发布时间】:2022-07-30 20:33:33
【问题描述】:

我目前正在通过一些事件日志开始使用 pm4py 库。我有一个示例日志,我正在像这样导入:

from pm4py.objects.log.importer.xes import importer as xes_importer
log = xes_importer.apply('financial_log.xes')

如果我现在打印日志的跟踪,标准输出如下所示:

print(log[0])

{'属性': {'REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), '概念:名称':'173688','AMOUNT_REQ':'20000'},'事件': [{'org:resource': '112', 'lifecycle:transition': 'COMPLETE', '概念:名称':'A_SUBMITTED','时间:时间戳': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:concept:name': '173688', 'case:AMOUNT_REQ': '20000'}, '..', {'org:resource': '10629', 'lifecycle:transition': 'COMPLETE', '概念:名称':'W_Valideren aanvraag','时间:时间戳': datetime.datetime(2011, 10, 13, 10, 37, 37, 26000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:concept:name': '173688', 'case:AMOUNT_REQ': '20000'}]}

但是,为了更好地检查跟踪和事件,我尝试格式化输出以使其更具可读性。我尝试使用 pprint 库但没有任何成功。 这是我尝试过的:

from pprint import pprint
pprint(log, indent=1)

输出如下所示:

[{'属性': {'REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), '概念:名称':'173688','AMOUNT_REQ':'20000'},'事件': [{'org:resource': '112', 'lifecycle:transition': 'COMPLETE', '概念:名称':'A_SUBMITTED','时间:时间戳': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:concept:name': '173688', 'case:AMOUNT_REQ': '20000'}, '..', {'org:resource': '10629', 'lifecycle:transition': 'COMPLETE', '概念:名称':'W_Valideren aanvraag','时间:时间戳': datetime.datetime(2011, 10, 13, 10, 37, 37, 26000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:concept:name': '173688', 'case:AMOUNT_REQ': '20000'}]}, '....', {'属性': {'REG_DATE': datetime.datetime(2012, 2, 29, 23, 51, 16, 799000, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))), '概念:名称':'214376','AMOUNT_REQ':'15000'},'事件': [{'org:resource': '112', 'lifecycle:transition': 'COMPLETE', '概念:名称':'A_SUBMITTED','时间:时间戳': datetime.datetime(2012, 2, 29, 23, 51, 16, 799000, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))), 'case:REG_DATE': datetime.datetime(2012, 2, 29, 23, 51, 16, 799000, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))), 'case:concept:name': '214376', 'case:AMOUNT_REQ': '15000'}, '..', {'org:resource': '11169', 'lifecycle:transition': 'COMPLETE', “概念:名称”:“W_Afhandelen 领先”、“时间:时间戳”: datetime.datetime(2012, 3, 1, 9, 27, 41, 325000, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))), 'case:REG_DATE': datetime.datetime(2012, 2, 29, 23, 51, 16, 799000, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))), 'case:concept:name': '214376', 'case:AMOUNT_REQ': '15000'}]}]

有什么方法可以打印带有换行符和正确缩进的对象,如 pprint 文档站点上所示?我也愿意接受其他关于如何“漂亮”打印痕迹的建议。

【问题讨论】:

  • 输出难以阅读,请同时格式化为代码。
  • @D.L 输出的内容不相关。它应该只是表明它根本没有格式化。

标签: python pprint


【解决方案1】:

这不起作用,因为 dict 包含 datetime 对象。所以当你导入datetime 时,它会起作用。

这行得通:

import datetime
import pprint

x = {'attributes': {'REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'concept:name': '173688', 'AMOUNT_REQ': '20000'}, 'events': [{'org:resource': '112', 'lifecycle:transition': 'COMPLETE', 'concept:name': 'A_SUBMITTED', 'time:timestamp': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:concept:name': '173688', 'case:AMOUNT_REQ': '20000'}, '..', {'org:resource': '10629', 'lifecycle:transition': 'COMPLETE', 'concept:name': 'W_Valideren aanvraag', 'time:timestamp': datetime.datetime(2011, 10, 13, 10, 37, 37, 26000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))), 'case:concept:name': '173688', 'case:AMOUNT_REQ': '20000'}]}

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(x)

结果:

{   'attributes': {   'AMOUNT_REQ': '20000',
                      'REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))),
                      'concept:name': '173688'},
    'events': [   {   'case:AMOUNT_REQ': '20000',
                      'case:REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))),
                      'case:concept:name': '173688',
                      'concept:name': 'A_SUBMITTED',
                      'lifecycle:transition': 'COMPLETE',
                      'org:resource': '112',
                      'time:timestamp': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200)))},
                  '..',
                  {   'case:AMOUNT_REQ': '20000',
                      'case:REG_DATE': datetime.datetime(2011, 10, 1, 0, 38, 44, 546000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))),
                      'case:concept:name': '173688',
                      'concept:name': 'W_Valideren aanvraag',
                      'lifecycle:transition': 'COMPLETE',
                      'org:resource': '10629',
                      'time:timestamp': datetime.datetime(2011, 10, 13, 10, 37, 37, 26000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200)))}]}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2021-10-10
    • 2014-05-21
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多