如何使pyx\x转义?

2024-06-09 09:36:26 发布

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

我想使用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转义符吗?任何帮助都将不胜感激。你知道吗


Tags: torightyouuse规则displaypyparsingrule
2条回答

如果要在输入字符串中嵌入“\”,请确保在前导引号前面加上“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'], {})

只需使用\\来转义\

"A -> '_\\x5555 a'"

相关问题 更多 >