pyparsing

    1熱度

    1回答

    我正在使用以下類型的Pyparsing表達式。 pp.SkipTo(common_cfg)('value 2') + common_cfg + pp.SkipTo(pp.LineEnd()) common_cfg是將「值1」賦值給其結果的表達式。 當我解析爲asDict()我得到嵌套字典。爲什麼會發生,我該如何解決它?在「值2」的情況下,我只需要一個空字符串。 {'value 1': '52D

    2熱度

    1回答

    是否有另一種設置分析操作的方法,而不是直接在operatorPrecedence中進行pyparsing? 我想在其他地方的例子中定義action。 expr = pp.operatorPrecedence(condition, [ (not_, 1, pp.opAssoc.RIGHT, action), (and_, 2, pp.opAssoc.LEFT, action),

    2熱度

    1回答

    我使用的是這樣的: parser = parser1^parser2^parser3 然後 result = parser.parseString(line) 有一個簡單的內置的方法來確定其3 OR'ed解析器成功了嗎?

    6熱度

    1回答

    我正在使用PyParsing來解析一些類似C的格式的文本文件(braces and semicolons以及所有這些文件)。 PyParsing工作得很好,但由於我的文件的大小,它很慢並且消耗了大量的內存。 因此,我想嘗試實現一個解析方法,其中我會一個接一個地解析源文件的頂級元素。 pyparsing的方法似乎是這樣做的顯而易見的方法。但是,我想確保在由scanString解析的部分之間不存在無效

    4熱度

    1回答

    我試圖使用pyparsing來分析robotframework,這是一個基於文本的DSL。 sytnax就像下面一樣(對不起,但我認爲在BNF中描述它有點困難)。 在robotframework單個線可以是這樣的: Library\tSSHClient with name\tnode \ t是標籤,並在robotframework,它被透明轉移到2「,「(實際上,它只需調用str.replac

    3熱度

    2回答

    這裏是我的代碼: l = "1.3E-2 2.5E+1" parser = Word(alphanums + '+-.') grammar = delimitedList(parser,delim='\t ') print(grammar.parseString(l)) 它返回: ['1.3E-2'] Obiously,我希望所有的這兩個值,不是單一的一個,任何想法是怎麼回事上 ?

    1熱度

    1回答

    我想解析一個簡單的語言。麻煩來解析函數調用。我試圖告訴它,函數調用是一個表達式,後面跟着左括號,參數列表和右括號。我有這樣的事情: expr = Forward() iden = Word(alphas+'_', alphanums+'_') integer = Word(nums) binop = operatorPrecedence(expr, ...) # irrevelant ca

    3熱度

    2回答

    我用一些簡單的Markdown文本來玩弄和學習一般的Pyparsing和語法。我幾乎立即遇到了一個問題,即解決問題。我試圖解析一個簡單版本的CommonMark規範的重點。在這種設置中,嵌套的重點是允許的,讓 *foo *bar* baz* 應該給: <em>foo <em>bar</em> baz</em> 我使用遞歸定義來匹配這個嘗試,但它不工作。下面是一些示例代碼: from pyp

    1熱度

    1回答

    Pyparsing文檔顯示如何使用setResultsName(...)方法來設置生成的字典密鑰。但是,我幾次看到此方法被省略,並且僅使用(...)。 我的意思是: 相反的: exp1 = pp.Word(pp.alphas).setResultsName('word1') exp1.parseString("Hello").asDict() ...一個可以這樣做: exp1 = pp.Wo

    4熱度

    2回答

    我試圖使用Pyparsing將像aaa:bbb(123)這樣的字符串拆分爲令牌。 我可以用正則表達式來做到這一點,但我需要通過Pyparsing來做到這一點。 隨着re的解決方案將是這樣的: >>> import re >>> string = 'aaa:bbb(123)' >>> regex = '(\S+):(\S+)\((\d+)\)' >>> re.match(regex, stri