【发布时间】:2014-04-07 13:51:05
【问题描述】:
我想转义 xml 字符串中的未转义数据 例如
string = "<tag parameter = "something">I want to escape these >, < and &</tag>"
到
"<tag parameter = "something">I want to escape these >, < and &</tag>"
- 现在,我绝对不能使用任何 xml 解析库,如 xml.dom.minidom 或 xml.etree,因为数据未转义并且会报错
-
在正则表达式中,我找到了匹配和获取数据替换的开始和结束位置的方法
exp = re.search(">.+?</", label) # Get position of the data between tags start = exp.start() + 1 end = exp.end() - 2 return label[ : start] + saxutils.escape(label[start : end]) + label[end : ] 但在 re.search 中,我无法匹配确切的 xml 格式
- 如果我使用 re.findall 我无法获得找到的子字符串的位置
- 我总是可以通过 index 找到找到的子字符串的位置,但这效率不高,我想要一个简单但有效的解决方案
- BeautifulSoup 解决方案受到欢迎,但我希望有一些更漂亮的方式来使用 python 的基本库来实现它
【问题讨论】:
-
这个错误的 XML 最初是如何产生的?如果你能解决这个问题会更容易..
-
在字符串中你有
,而不是.在">.+?</",也许这就是为什么你无法匹配re.search 中的任何内容 -
@Aleksandar 上面的程序 sn-p 工作得很好
-
当然@MartijnPieters,但我时间紧迫,这是我能想出的hack :)
标签: python xml regex escaping beautifulsoup