python xml字符串_python -解析字符串,并返回xml格式字符串 急该如何解决

python --解析字符串,并返回xml格式字符串 急急急。

str = """Registrations:

=================================================================================================

Call-ID:        8945da7a7f550c16NWRjZjdmMjhmNWQxYTZlOTJjMDY5YjhiN2RjMDViMWE.

User:           1000@192.168.1.111

Contact:        "1000" <1000>1000>

Agent:          X-Lite release 1002tx stamp 29712

Status:         Registered(UDP)(unknown) EXP(2014-07-23 10:19:00) EXPSECS(2458)

Host:           debian

IP:             192.168.1.109

Port:           35838

Auth-User:      1000

Auth-Realm:     192.168.1.111

MWI-Account:    1000@192.168.1.111

Total items returned: 1

================================================================================================="""

这个字符串如何解析成列表,并构造成xml格式字符串。请各位大神注意,这个字符串contact字段中的值有冒号,

------解决方案--------------------

# -*- coding: cp936 -*-

str = """Registrations:

=================================================================================================

Call-ID:        8945da7a7f550c16NWRjZjdmMjhmNWQxYTZlOTJjMDY5YjhiN2RjMDViMWE.

User:           1000@192.168.1.111

Contact:        "1000" <1000>1000>

Agent:          X-Lite release 1002tx stamp 29712

Status:         Registered(UDP)(unknown) EXP(2014-07-23 10:19:00) EXPSECS(2458)

Host:           debian

IP:             192.168.1.109

Port:           35838

Auth-User:      1000

Auth-Realm:     192.168.1.111

MWI-Account:    1000@192.168.1.111

Total items returned: 1

================================================================================================="""

lineList = str.split("\n")

dictA = {}

listB = []

for line in lineList:

curLine = line.strip().split(":",1)

if len(curLine) !=2:

continue

key = curLine[0].strip()

value = curLine[1].strip()

if value == "":

continue

dictA[key] = value #你确定你不要字典?

listB.append((key,value))

print dictA

print listB

------解决方案--------------------

import re

from lxml import etree

s = """Registrations:

=================================================================================================

Call-ID:        8945da7a7f550c16NWRjZjdmMjhmNWQxYTZlOTJjMDY5YjhiN2RjMDViMWE.

User:           1000@192.168.1.111

Contact:        "1000" <1000>1000>

Agent:          X-Lite release 1002tx stamp 29712

Status:         Registered(UDP)(unknown) EXP(2014-07-23 10:19:00) EXPSECS(2458)

Host:           debian

IP:             192.168.1.109

Port:           35838

Auth-User:      1000

Auth-Realm:     192.168.1.111

MWI-Account:    1000@192.168.1.111

Total items returned: 1

================================================================================================="""

root = etree.Element('root')

data = s.split('\n')

for l in data[:-2]:

m = re.match('^([^:]+):\s+(.*)', l)

if m:

id, info = m.groups()

e = etree.Element(id)

e.text = info

root.append(e)

print etree.tostring(root, pretty_print=True)

记得先安装下 lxml,windows 下可以直接到官网下载安装包;linux 下可以 pip install lxml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值