python成功完成xml文件的解析、替换、保存
1.库
import xml.etree.cElementTree as ET
import re
2.需求描述
- 将kml文件中的部分内容替换为指定名称
- 实现保存
- kml文件示例:
<kml>
<customer ID="C001">
<Document>>cme Inc.</Document>
<phone>12345</phone>
<Placemark>
<name>泊岸时光印-1-4</name>
<phone>12345</phone>
</Placemark>
</kml>
3. 解析xml
import xml.etree.eElementTree as ET
tree = ET.parse(r'file_path')#file_path填写自己的文件路径即可,载入数据
root = tree.getroot() #获取根节点
#print(root.text)
from name in root.iter('Placemark'):
print(name[0].text)
print(phone[1].text)
name[0].text='凤凰大道199号泊岸时光印22幢1单元4楼' #修改
print(name[0].text)
tree.write('new.kml','UTF-8') #保存
4.正则修改
使用正则表达式对单元号和楼号进行定位替换修改,需要先定位到目标数据
import re
room='<name>泊岸时光印-1-4</name>'
new_room = re.findall(r'(?<=时光印.)\d+-\d',name[0].text) #获取到单元号和楼号 ['1-4']
room_str = "".join(new_room ) #将其转为str 8-3
split_room = re.findall(r'\d+',room_str) #将单元号和楼号分开 8 3
print(split_room[0],split_room[1])
5.替换保存,大功告成
import xml.etree.eElementTree as ET
import re
tree = ET.parse(r'file_path')#file_path填写自己的文件路径即可,载入数据
root = tree.getroot() #获取根节点
#print(root.text)
from name in root.iter('Placemark'):
print(name[0].text)
print(phone[1].text)
room='<name>泊岸时光印-1-4</name>'
new_room = re.findall(r'(?<=时光印.)\d+-\d',name[0].text) #获取到单元号和楼号 ['1-4']
room_str = "".join(new_room ) #将其转为str 8-3
split_room = re.findall(r'\d+',room_str) #将单元号和楼号分开 8 3
print(split_room[0],split_room[1])
new_name = '凤凰大道199号泊岸时光印22幢{}单元{}楼'.format(split_room[0],split_room[1])
name[0].text=new_name #修改
print(name[0].text)
tree.write('new.kml','UTF-8') #保存