gpt4 book ai didi

python - 如何让 PyParsing 识别\x 转义?

转载 作者:行者123 更新时间:2023-11-28 22:56:37 26 4
gpt4 key购买 nike

我想使用 PyParsing 来解析基于 BNF 的规则。规则可能如下所示:

A -> 'You can use \xABCD to display hexadecimal numbers'

其中 A 是一个非终结符号。赋值操作数是'->'。最后一项是带引号的字符串。

我按以下方式使用 PyParsing:

Left= Word(alphanums)
Op = oneOf('= := -> ::=')
Right = QuotedString('"') | QuotedString("'")
Rule = Left+ Op+ Right
Rule.parseString("A -> '_\x5555 a'") # Get an error of ValueError: invalid \x escape

那么你能告诉我如何用 QuotedString 重新定义\x 转义吗?任何帮助将不胜感激。

最佳答案

如果您要在输入字符串中嵌入“\”,请务必在前导引号前加上“r”,以便 Python 解释器保留所有“\”,而不是将它们解释为转义符。

从 Python 控制台 (Python 3.3):

>>> Left= Word(alphanums)
>>> Op = oneOf('= := -> ::=')
>>> Right = QuotedString('"') | QuotedString("'")
>>> Rule = Left+ Op+ Right
>>> Rule.parseString("A -> '_\x5555 a'")
(['A', '->', '_U55 a'], {})
>>> Rule.parseString(r"A -> '_\x5555 a'") # use a raw string literal, with r""
(['A', '->', '_\\x5555 a'], {})

关于python - 如何让 PyParsing 识别\x 转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15318776/

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