我有一个类似下面的字符串:date=2010-05-09,time=16:41:27,device_id=FE-2KA3F09000049,log_id=0400147717,log_part=00,type=statistics,subtype=n/a,pri=information,session_id=o49CedRc021772,from="prvs=4745cd07e1=example@example.org",mailer="mta",client_name="example.org,[194.177.17.24]",resolved=OK,to="example@exam
又名“将根据Parser.parseAction的结果构造的子节点添加到父解析树”我正在尝试使用PyParsing(恕我直言)解析PHP文件,其中函数定义已使用JavaDoc样式注释进行注释。原因是我想以一种可用于生成客户端stub代码的方式存储类型信息。例如:/**@vo{$user=UserAccount}*/publicfunctionblah($user){......现在,我已经能够编写解析器了,使用PyParser非常容易。但是,PyParser带有一个内置的javaStyleCommentToken,我想重用它。所以我解析了代码,然后尝试附加一个parseAction,它
grammar=Literal("from")+Literal(":")+Word(alphas)语法需要拒绝from:mary并且只接受from:mary即没有任何交错空格。我如何在pyparsing中强制执行此操作?谢谢 最佳答案 你能使用Combine吗?grammar=Combine(Literal("from")+Literal(":")+Word(alphas))然后:编辑以回应您的评论。真的吗?>>>grammar=pyparsing.Combine(Literal("from")+Literal(":")+Word(
我正在使用pyparser处理十六进制到文本转换器的输出。它每行打印出16个字符,以空格分隔。如果十六进制值是ASCII可打印字符,则打印该字符,否则转换器输出句点(.)大部分输出看起来像这样:.a.valid.string..another.string..etc............我描述这一行的pyparsing代码是:dump_line=16*Word(printables,exact=1)这工作正常,直到十六进制到文本转换器达到0x20的十六进制值,这导致它输出一个空格。line.w.a.space.在这种情况下,pyparsing会忽略输出的空格并占用下一行中的字符以构成
我是pyparsing的新手,但我找不到解决这个非常简单的问题的方法。我(目前)有一个简单的语法,但我找不到根据我在语法中定义的类型来区分解析结果的方法。也许用一个例子来解释它会更容易。假设这个元素:elem=foo|bar当我调用时:elem.parseString("...")假设字符串与我的语法匹配,我如何区分它是与“foo”匹配还是与“bar”匹配?我得到一个没有此类元数据的ParseResults实例对象。提前致谢。 最佳答案 您可以为它们指定一个名称(一个使用Literal的复杂示例):foo=Literal('foo'
我希望能够从一段文本中提取出字母的类型和数量,其中字母可以按任何顺序排列。我正在进行其他一些解析工作,但这一点让我感到难过!input->result"abc"->[['a',1],['b',1],['c',1]]"bbbc"->[['b',3],['c',1]]"cccaa"->[['a',2],['c',3]]我可以对每个可能的字母使用搜索或扫描并重复,但有一种干净的方法吗?据我所知:frompyparsingimport*defhandleStuff(string,location,tokens):return[tokens[0][0],len(tokens[0])]stype=
我有这样的字符串:"MSE2110,3030,4102"我想输出:[("MSE",2110),("MSE",3030),("MSE",4102)]这是我的处理方式,虽然我还没有完全理解:defmakeCourseList(str,location,tokens):print"before:%s"%tokensforindex,course_numberinenumerate(tokens[1:]):tokens[index+1]=(tokens[0][0],course_number)print"after:%s"%tokenscourse=Group(DEPT_CODE+COURSE
我正在努力使用PyParsing解析嵌套结构。我搜索了很多'nested'exampleusesofPyParsing,但我不知道如何解决我的问题。这是我的内部结构:texture_unitoptionalName{texturerequired_valprop_name1prop_val1prop_name2prop_val1}这是我的外部结构的样子,但它可以包含零个或多个内部结构。passoptionalName{prop_name1prop_val1prop_name2prop_val1texture_unitoptionalName{//edit2:showinguseof'.
我如何使用正则表达式(或pyparsing更好?)描述下面呈现的脚本语言的语法(Backus–Naur形式)::=|:=[*]:="{""}"|;:={;}leaf:=={;}:=:=脚本示例:{stage=3;some.param1=[10,20];}*{stage=4;param3=[100,150,200,250,300]}*endparam=[0,1]我使用pythonre.compile并希望将所有内容分组,如下所示:[['stage','3'],['some.param1','[10,20]']],[['stage','4'],['param3','[100,150,200
Pyparsing对于非常小的语法来说工作得很好,但随着语法的增长,性能下降并且内存使用量飙升。我目前的语法是:newline=LineEnd()minus=Literal('-')plus=Literal('+')star=Literal('*')dash=Literal('/')dashdash=Literal('//')percent=Literal('%')starstar=Literal('**')lparen=Literal('(')rparen=Literal(')')dot=Literal('.')comma=Literal(',')eq=Literal('=')eqe