gpt4 book ai didi

python - 来自 pyparsing 的漂亮 Json

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:11 25 4
gpt4 key购买 nike

所以,我有一些 EBNF 形式的表达式,用于解析一些微分方程组

END = Literal(';').suppress()
POINT = Literal('.')
COMMA = Literal(',').suppress()
COLON = Word(':', max=1).suppress()
EQUAL = Literal('=').suppress()
VARNAME = Word(alphas, max=1)
NATNUM = Word(nums) # 1234567890
SIGN = oneOf('+ -')
OPER = oneOf('+ - * / ^ ')
REALNUM = Combine(Optional(SIGN) + NATNUM + Optional(POINT + NATNUM)) # Real Numbers 2.3, 4.5
STEP = Dict(Group('Step' + COLON + REALNUM + END)) # Step: 0.01 ;
RANGE = Dict(Group('Range' + COLON + REALNUM + END)) # Range: 2.0 ;
VARINIT = Group(VARNAME + Suppress('=') + REALNUM) # x=32.31
ZEROVAR = Dict(Group('Vars0' + COLON + VARINIT + Optional(COMMA + VARINIT) + END))
COEFF = Dict(Group('Coeff' + COLON + VARINIT + Optional(COMMA + VARINIT) + END))
EXPESS = Forward()
EXPESS << Combine((REALNUM | VARNAME) + ZeroOrMore(OPER + EXPESS), adjacent=False)
IDENT = Combine('d'+VARNAME)
FUNC = Group(IDENT + EQUAL + EXPESS)
DIFUR = Dict(Group('Exp' + COLON + FUNC + ZeroOrMore(COMMA + FUNC) + END))
STATE = Suppress("Start") + DIFUR + ZEROVAR + COEFF + STEP + RANGE + Suppress("Stop")

我想通过解析finally STATE表达式来接收这种JSON:

{
'Vars0': {
'y', '0.55',
'x', '0.02',
},
'Exp': {
'dx': 'a*x-y',
'dy': 'b*x-y',
'dz':'800-2*4*x+z'
},
'Range': '2.0',
'Step': '0.05',
'Coeff': {
'a': '5',
'b': '2'
}
}

但是我有一些像这样丑陋的东西,例如 'Vars0': ([(['y', '0.55'], {}), (['x', '0.02'], {} )], {}) 等等。我的愚蠢错误是什么?附注解析纯文本可以像 this

最佳答案

您拥有的不是 JSON,而是一个 Python 字典变量,幸运的是,这意味着它可以使用 pprint 模块进行 pretty-print 。

具体看一下pprint.pprint:https://docs.python.org/2/library/pprint.html#pprint.pprint .

将缩进设置为 4,宽度设置为 1 可能会产生令您满意的结果。示例:https://ideone.com/pYESaW

关于python - 来自 pyparsing 的漂亮 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43597777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com