python - 从 python 中的行/Robust XML解析器中删除垃圾字符

标签 python xml linux shell unix

我有一个包含损坏的 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/

相关文章:

python - Python类中返回方法调用结果的常见方法是什么?

python - NLTK 中用于解析的英语语法

python - python中的等效 "yield"excel函数?

php - 通过 cURL 在 PHP DOM 中解析 XML - 如果它是 url 地址或日期,则无法获取 nodeValue

python - 创建一个 Cron 作业 - Linux/Python

c++ - 如何使 libpcap/pcap_loop 成为非阻塞的?

python - 单选按钮和 webapp2

Java - 确定xml文档的大小

java - 如何查找 xml 字符串值并将其设置为等于 java 变量?

c++ - 使用 G++ 动态编译 C++ 代码片段