如何正确逃生单引号和双引号
我有我试图建立与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





