以下代码
text = QuotedString(quoteChar="(", endQuoteChar=")", escChar="\\")
text.leaveWhitespace()
def test_hex_with_backslashN_code(self):
self.assertEqual(text.parseString("(\x01\x0a)")[0], "(\x01\x0a)")
触发异常:
^{pr2}$因为“\x0a”hexa值被解释为'\n',即使在leaveWhitespace调用中也不会被视为普通字符。在
我也试过使用skipot,但我没能处理好逃出的内括号,比如:
"( I am \( John \))"
使用解析器
text = "(" + SkipTo(")")
有什么办法解决这个问题吗?在
以下是我最终找到的解决方案:
尝试在字符串前面加上
r
。如果你有一根绳子把它改成
^{pr2}$结果是斜杠被立即解释,而不是到达
pyparsing
。你有text.parseString("(\x01\x0a)")
,它的与text.parseString("(\x01\n)")
完全相同。在试试这个解决方案,它解决了kirelagin发现的反斜杠问题:
印刷品:
^{pr2}$因为您假设将包括引号字符,所以添加参数
unquoteResults=False
。如果您无论如何都要去掉()的,那么不妨让pyparsing为您做这件事,并将此参数作为True传递(或者忽略它,因为True是默认值)。在相关问题 更多 >
编程相关推荐