如何删除标签xml外的文本

时间:2013-11-11 01:47:04

标签: python xml

我是一个新用户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()

有了这个,我可以删除标签之间的所有文字,或者是标签。

感谢您的关注。

1 个答案:

答案 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())

根据周围文本的结构,您可能需要使用更复杂的正则表达式。