我是一个新用户python,我正在尝试操作XML文件。 XML标记之外的文本只有字符串。如下例所示:
blhpxxxx [SCRIPT MODE]> show syslog server 1
Retrieving syslog server (s) ...
<EVENT
SEVERITY = "Repaired" />
问题在于我无法想象如何删除不在标记内的所有文本。
不好意思,因为我说我是陌生世界的新手,但我找不到解决问题的方法。
1 - 我得到的文件不是xml,它只包含文本中间的xml标签。以下是结构的完整示例:
HP BladeSystem Onboard Administrator (C)版权所有2006-2013 Hewlett-Packard Development Company,LP
blhp0001 [脚本模式]&gt; show syslog server 1
检索系统日志服务器......
Syslog Server 1:
<EVENT_LOG DESCRIPTION="Integrated Management log">
< EVENT
SEVERITY = " Repaired "
CLASS = " Rack Infrastructure "
Last_update = " 05/15/2011 15:58 "
INITIAL_UPDATE = " [NOT SET ] "
COUNT = " 11 "
DESCRIPTION = " Server Blade Enclosure Inadequate Power To Power On : Not Enough Power ( Enclosure Serial Number " , " Slot 6 ) "
/ >
< EVENT
SEVERITY = " Informational "
CLASS = " Rack Infrastructure "
Last_update = " 05/09/2011 24:18 "
INITIAL_UPDATE = " 05/09/2011 12:18 "
COUNT = "1"
DESCRIPTION = " LAN Settings Changed ( USE844HBNT Enclosure Serial Number ) "
/ >
blhp0001 [脚本模式]&gt; show syslog server
#!/usr/bin/env python
prt = False
for line in open('meh').readlines():
if 'EVENT_LOG' in line:
if prt:
print line.rstrip()
prt ^= True
if prt:
print line.rstrip()
有了这个,我可以删除标签之间的所有文字,或者是标签。
感谢您的关注。
答案 0 :(得分:2)
正如第一条评论指出的那样,它实际上不是一个xml文件。
但您可以使用带有正则表达式的短脚本来创建xml文件。给定您的示例字符串,您可以根据以下代码创建此类脚本:
import re
text = 'blhpxxxx [SCRIPT MODE]> show syslog server 1 Retrieving syslog server (s) ... <EVENT SEVERITY = "Repaired" /> '
print(re.search("\<.*\>", text).group())
根据周围文本的结构,您可能需要使用更复杂的正则表达式。