如何正确逃生单引号和双引号
我有我试图建立与XPath的断言的XPath一个LXML etree的HTMLParser对象,属性是标签的XPath和文字。我跑进当标签的文本有两种单引号(')或双引号(“)问题,我已经用尽我的所有选项。如何正确逃生单引号和双引号
这里是我创建
parser = etree.HTMLParser() tree = etree.parse(StringIO(<html><body><p align="center">Here is my 'test' "string"</p></body></html>), parser)
一个样本对象 这里的代码片断,然后被读取
def getXpath(self) xpath += 'starts-with(., \'' + self.text + '\') and '
xpath += ('count(@*)=' + str(attrsCount) if self.exactMatch else "1=1") + ']'
self.text变量的不同变化基本上是标签的预期的文本,在这种情况下:这是我的“测试”“串”
当我尝试使用的HTMLParser对象的XPath的方法失败
tree.xpath(self.getXpath())
原因是因为它得到了XPath是这个“/html/body/p[starts-with(.,'Here是我的'test'“string”')and 1 = 1]'
如何正确地从self.text变量中转义单引号和双引号?我尝试了三重引用,在repr()中包装self.text,或者做一个re.sub或string.replace转义'和'与\'和\“
回答:
据我们可以看到in Wikipedia和w3 school,你不应该有'
和"
中的节点的内容,即使只有<
和&
被说成是非法stricly。它们应该被替换为相应的“预定义实体引用”,即'
和"
。
顺便说一句,我用会照顾这个透明的Python的解析器:写作时,它们被替换;阅读时,它们会被转换。
经过第二次阅读您的答案后,我在Python解释器中测试了一些与'
等相关的东西。它会为你逃脱一切!
>>> 'text {0}'.format('blabla "some" bla') 'text blabla "some" bla'
>>> 'ntsnts {0}'.format("ontsi'tns")
"ntsnts ontsi'tns"
>>> 'ntsnts {0}'.format("ontsi'tn' \"ntsis")
'ntsnts ontsi\'tn\' "ntsis'
所以我们可以看到Python正确地转义了事物。你能复制粘贴错误信息吗(如果有的话)?
回答:
有更多的选项可供选择,尤其是"""
和'''
可能是你想要的。
s = "a string with a single ' quote" s = 'a string with a double " quote'
s = """a string with a single ' and a double " quote"""
s = '''another string with those " quotes '.'''
s = r"raw strings let \ be \"
s = r'''and can be added \ to " any ' of """ those things'''
s = """The three-quote-forms
may contain
newlines."""
以上是 如何正确逃生单引号和双引号 的全部内容, 来源链接: utcz.com/qa/261083.html