利用BeautifulSoup和python处理xml

本文介绍了一种使用Python的BeautifulSoup模块对SUMO软件中的XML文件进行排序的方法。通过根据XML标签中的'depart'属性值对车辆出发时间排序,实现了对SUMO配置文件的有效管理。

SUMO的软件有些地方真是不好。很多SUMO中要用到的xml文件之前都是手工完成的。今天用BeautifulSoup模块写了一个代码,解决了最麻烦的排序问题。

问题其实很简单,就是根据xml标签中的一个特定属性进行排序,然后再保存成文件。

譬如下面这个xml文件,我们希望标签的顺序能够根据depart中的数值来排序。在SUMO软件中,这个就是车辆的出发时间。


import bs4#导入BeautifulSoup的包
soup = bs4.BeautifulSoup(open('E:/test.xml'))#读取需要排序的xml文件
soup=soup.body
soup = soup.routes#根据xml文件的结构,做一个简单的处理
 list = []#构建一个List
for child in soup.children:#遍历子节点,并存在List中,用来排序
    print cnt
    list.append(child)
    cnt = cnt+1

kk = list[0]
for i in range (0, len(list)):#删除冗余的节点信息
    if list[i] == kk:
        print i
        list.pop(i)

listBackup = list[:]#复制一份List,怕出什么意外



def fun(x):#define the sort function
    return float(x['depart'])
    
list.sort(key=fun) #sort the list 


    
f=file("E:/sorted2.xml","a+")
for cnt in range(0,len(list)):#write the string to the file
    f.write(str(list[cnt])+'\n') 
f.close    #close the file handler
上面的代码能很好实现这样的功能,以后再也不用复制黏贴了~~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钱塘小甲子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值