gpt4 book ai didi

python - 使用 xml.etree.ElementTree (python) 解析 XML 时,如何区分常规空格和转义空格 ()

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:09 24 4
gpt4 key购买 nike

我正在使用 xml.etree.ElementTree 来解析 XML 文件。我如何强制它去除空格文本(只是常规空格,而不是 )或保留空格并忽略转义(保持原样)?这是我的问题:

xml_text = """
<root>
<mytag>
data_with_space&#32;
</mytag>
</root>"""
root = xml.etree.ElementTree.fromstring(xml_text)
mytag = root.find("mytag")
print "original text: ", repr(mytag.text)
print "stripped text: ", repr(mytag.text.strip())

它打印:

original text:  '\n        data_with_space \n    '
stripped text: 'data_with_space'

我需要什么:

'data_with_space '

或者(我可以通过其他方式逃避):

'data_with_space&#32;'

使用 xml.etree.ElementTree 的解决方案更可取,否则我将不得不重写大量代码

最佳答案

标准 XML 库将 ' ' 视为相等。如果您直接应用fromstring(xml_text),则无法避免均衡,因此无法区分它们。停止转义的唯一方法是在应用 fromstring() 之前将其翻译成其他内容,然后再将其翻译回来。


import xml.etree.ElementTree

stop_escape = lambda text: text.replace("&#", "|STOP_ESCAPE|")
resume_escape = lambda text: text.replace("|STOP_ESCAPE|", "&#")

xml_text = """
<root>
<mytag>
data_with_space&#32;
</mytag>
</root>"""
root = xml.etree.ElementTree.fromstring(stop_escape(xml_text))
mytag_txt = resume_escape(root.find("mytag").text)
print "original text: ", repr(mytag_txt)
print "stripped text: ", repr(mytag_txt.strip())

你会得到:

original text:  '\n        data_with_space&#32;\n    '
stripped text: 'data_with_space&#32;'

关于python - 使用 xml.etree.ElementTree (python) 解析 XML 时,如何区分常规空格和转义空格 (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20675545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com