使用pyparsing累计

2024-09-30 02:31:38 发布

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

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

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

其中barfoo是2个解析器。你知道吗

这个函数的问题是,每当OneorMore匹配数据流中的foo和bar解析器时,与键"foo""bar"关联的相应值都是更新了。但是, 如何累积foobar的所有匹配值?你知道吗

我尝试在Haskell中实现many1一元解析器,将解析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中执行此操作?你知道吗


Tags: 数据函数解析器foohaskellbarpyparsing数据流
1条回答
网友
1楼 · 发布于 2024-09-30 02:31:38

我不是100%确定我理解你的要求,而且我对pyparsing已经生疏了,但是我认为^{}会帮助你。你知道吗

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]

相关问题 更多 >

    热门问题