我有一个包含损坏的 XML 的文件,行尾有一些我想删除的垃圾字符。这些垃圾字符不允许我使用 Python 的 XML 解析器。示例:
<request><pair><name>q</name><value><![CDATA[LOL]]></value></pair><pair><name>start</name><value>1</value></pair></request>�J I�i�Y�Y��'z�3�u�J�5��}���#Q/k;!�ˑ�9Q){_������ŐF
<request><pair><name>q</name><value><![CDATA[LOL2]]></value></pair><pair><name>start</name><value>1</value></pair></request>4/lIT�l��'�c�Oֲ�{�;��_?��(>͏Y�mP��
如何删除 </request>
之后的乱码?或者换句话说,如何删除 </request>
之间的字符串和 <request>
?
请注意 <request>
至 </request>
只是一行所以
代码:
awk '/<request>/ , /<\/request>/' test.txt
不起作用。
在这种情况下,我的目的是在名称为“q”(LOL 和 LOL2)时提取值。因此,如果这可以轻松完成,我就不会为删除垃圾字符而烦恼。
感谢您的宝贵时间。
最佳答案
您可以使用 lxml 和 xpath 表达式提取数据-
import lxml
from lxml import etree
source_xml = " path to your xml file"
et = etree.parse(source_xml)
value = et.xpath("//document/request/pair[name='q']/value/text()")
print " ".join(value)
我使用您给定的 xml 示例进行了尝试,我的输出是 'LOL LOL2'
关于python - 从 python 中的行/Robust XML解析器中删除垃圾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8741857/