本文中的代码实现删除一个文件夹下所有的xml文件中的重复词条(重复词条指同一个xml中的)。
例如有下列目录结构(上传不了图片):
res:(目录)
value:(子目录)
string.xml
valus-es:(子目录)
string.xml
要删除子目录下string.xml中的重复词条,就可以使用下面的代码,将代码保存为.py文件放在res下。
进入res目录运行.py文件即可。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from xml.dom.minidom import parse
from xml.dom.minidom import Document
import xml.dom.minidom
import xml.dom.minidom as Dom
import os
import os.path
import codecs
import glob
path = os.path.abspath('.')
print path
dirNames = [x for x in os.listdir('.') if os.path.isdir(x)]#当前目录下的所有文件夹
for name in dirNames:
if "value" in name:#文件夹名中含value
print path+"\\"+name#打印文件夹名
newPath=path+"\\"+name
files=glob.glob(newPath+"\*.xml")#找出所有含value文件夹中的xml文件
for file in files:#对xml文件中重复的词条进行删除
print file
newFile=(os.path.basename(file).split("."))[0]+".xml"
newfile2= file#newPath + "\\" + newFile
print "newfile2: %s" % newfile2
DOMTree=xml.dom.minidom.parse(file)
Collection=DOMTree.documentElement
strs=Collection.getElementsByTagName("string")
i=0
a=len(strs)
for str in strs:
j=i
for str1 in strs:
strName=str.getAttribute("name")
strContext=str.childNodes[0].data
str1Name=strs[j+1].getAttribute("name")
str1Context=strs[j+1].childNodes[0].data
j=j+1
if (strName==str1Name) and (strContext==str1Context):#有重复生成新文件
#Collection.removeChild(strs[j+1])
Collection.removeChild(str)
f = codecs.open(newfile2,'w','utf-8')
DOMTree.writexml(f,encoding = 'utf-8')#不需要单独在设置格式
f.close()
#print strName
if j==(a-1):
break
i=i+1
if i==(a-1):
break
运行效果参见
老司机