0

我是新用户 python,我正在尝试操作 XML 文件。在 XML 标记之外有文本的地方,只有字符串。如下例所示:

blhpxxxx [SCRIPT MODE]> show syslog server 1 Retrieving syslog server (s) ... <EVENT SEVERITY = "Repaired" />

问题是我无法想象如何删除不在标签内的所有文本。


抱歉,我说我是 python 世界的新手,但我仍然没有详细了解我的问题,但是找到了问题的解决方案。

1 - 我得到的文件不是 xml ,它只在文本中间包含 xml 标签。这是结构的完整示例:

HP BladeSystem Onboard Administrator (C) 版权所有 2006-2013 Hewlett - Packard Development Company, LP

blhp0001 [脚本模式] > 显示系统日志服务器 1

正在检索 syslog 服务器 ( s ) ...

系统日志服务器 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 [脚本模式] > 显示系统日志服务器


#!/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()

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

感谢您的关注。

4

1 回答 1

3

正如第一条评论指出的那样,它实际上不是一个 xml 文件。

但是您可以使用带有正则表达式的短脚本来创建 xml 文件。给定您的示例字符串,您可以根据以下代码创建这样的脚本:

import re

text = 'blhpxxxx [SCRIPT MODE]> show syslog server 1 Retrieving syslog server (s) ... <EVENT SEVERITY = "Repaired" /> '

print(re.search("\<.*\>", text).group())

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

于 2013-11-11T02:05:49.873 回答