Python的XML节点替换或字符串替换问题
有一个xml文件:<root>text<a/><a/>...这里省略n个<a/><root>想替换成下面的形式:<root>text<a1>a1fora</a1><a2>...
有一个xml文件:
<root>text
<a/>
<a/>
...这里省略n个<a/>
<root>
想替换成下面的形式:
<root>text
<a1>a1 for a</a1>
<a2>a2 for a</a2>
...n个<an>...</an>
<root>
请问,应该怎么替换呢?用字符串替换或lxml包的方法都可以。谢谢!
原xml是没有换行的:<root>text<a/><a/><a/>...<root>
要生成的xml也不需要换行:
<root>text<a1>a1for a</a1><a2>a2for a</a2><a3>a3for a</a3>...<root> 展开
<root>text
<a/>
<a/>
...这里省略n个<a/>
<root>
想替换成下面的形式:
<root>text
<a1>a1 for a</a1>
<a2>a2 for a</a2>
...n个<an>...</an>
<root>
请问,应该怎么替换呢?用字符串替换或lxml包的方法都可以。谢谢!
原xml是没有换行的:<root>text<a/><a/><a/>...<root>
要生成的xml也不需要换行:
<root>text<a1>a1for a</a1><a2>a2for a</a2><a3>a3for a</a3>...<root> 展开
2个回答
展开全部
fpr=open("text.txt")
data=fpr.read()
n=0
for i in range(len(data)):
if data[i]=='/' and data[i+1]=='>':
n+=1
newdata=data[0:i]+str(n)+'>a'+str(n)+'fora</a'+str(n)+'>'
k=i
break
for i in range(k+1,len(data)):
if data[i]=='/' and data[i+1]=='>':
n+=1
newdata=newdata+data[i-2:i]+str(n)+'>a'+str(n)+'fora</a'+str(n)+'>'
newdata+='<root>'
fpr.close()
fpw=open("newtext.txt","w+")
fpw.write(newdata)
fpw.close()
测试数据:<root>text<a/><a/><a/><root>
输出结果:<root>text<a1>a1fora</a1><a2>a2fora</a2><a3>a3fora</a3><root>
data=fpr.read()
n=0
for i in range(len(data)):
if data[i]=='/' and data[i+1]=='>':
n+=1
newdata=data[0:i]+str(n)+'>a'+str(n)+'fora</a'+str(n)+'>'
k=i
break
for i in range(k+1,len(data)):
if data[i]=='/' and data[i+1]=='>':
n+=1
newdata=newdata+data[i-2:i]+str(n)+'>a'+str(n)+'fora</a'+str(n)+'>'
newdata+='<root>'
fpr.close()
fpw=open("newtext.txt","w+")
fpw.write(newdata)
fpw.close()
测试数据:<root>text<a/><a/><a/><root>
输出结果:<root>text<a1>a1fora</a1><a2>a2fora</a2><a3>a3fora</a3><root>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-17 · 知道合伙人软件行家
关注
展开全部
测试文件
<root>text
<a/>
<a/>
<a/>
<root>
程序:
old=open("test.xml")
lines=old.readlines()
a="<a/>"
i=1
newlines=[]
for line in lines:
if a in line:
line=line.replace(a,"<a"+str(i)+">a"+str(i)+"for a</a"+str(i)+">")
i=i+1
newlines.append(line)
for line in newlines:
print line
new=open("newtest.xml","w")
new.writelines(newlines)
new.close()
old.close()
结果:
<root>text
<a1>a1for a</a1>
<a2>a2for a</a2>
<a3>a3for a</a3>
<root>
给分吧,哈哈。
追问
哦,您这个是假设这个xml文件是well formed,实际上不是的。我这样写是为了清楚,其实这个xml文件是下面这样的,没有换行:
text
要生成的xml也不需要换行:
texta1for aa2for aa3for a
您有办法替换吗?
追答
import xml.dom.minidom
oldxmlfile=open("test.xml")
oldxml=oldxmlfile.read()
oldxmlfile.close()
doc = xml.dom.minidom.parseString(oldxml)
index=1
for node in doc.getElementsByTagName("a"):
node.tagName="a"+str(index)
index=index+1
newxml=doc.toprettyxml()
xmlfile=open("newxml2.xml","w")
xmlfile.write(newxml);
xmlfile.close()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询