gpt4 book ai didi

python - 使用 pyparsing 累积

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:07 26 4
gpt4 key购买 nike

我有一些数据可以使用 pyparsing 中的 OneorMore 函数进行解析。比如,

fun = OneorMore( foo.setResultsName("foo") +  bar.setResultsname("bar") )

其中 barfoo 是 2 个解析器。

这个函数的问题在于,每次 OneorMore 匹配数据流中的 foo 和 bar 解析器时,与键 "foo" 关联的相应值>"bar" 已更新。但是,如何累积 foobar 的所有匹配值?

我正在尝试实现类似 many1 的东西Haskell 中的 monadic 解析器,将解析 foobar 的结果保存在代数数据类型中,例如

data FooBar a = FooBar a a

many1 :: ParsecT s u m a -> ParsecT s u m [a]

many1 parserFooBar :: ParsecT s u m [FooBar a]

我如何在 python 中执行此操作?

最佳答案

我不是 100% 确定我明白你在问什么,并且对 pyparsing 生疏,但我认为 Group 会帮助你。

from pyparsing import *

text = 'abc123xyz456def789'
foo = Word(alphas)
bar = Word(nums)
fun = OneOrMore(Group(foo.setResultsName("foo") + bar.setResultsName("bar")))

results = fun.parseString(text)

#Print all foo
print [r.foo for r in results]
#Print all bar
print [r.bar for r in results]

关于python - 使用 pyparsing 累积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31392505/

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