Python实现文件内容复制后添加XML闭合标签问题求助
嘿,我一眼就看出问题出在哪啦!你把那些XML闭合标签的写入语句放进了读取文本行的for循环里,所以每读取一行内容,程序就会输出一遍</codeblock>、</conbody>和</concept>,这才导致了标签重复出现的问题。
修正后的代码
把闭合标签的写入逻辑移到循环外面,等所有文本内容都写完之后再统一添加这些闭合标签就可以了:
with open("hello.txt") as f: with open('copy.xml', 'w') as f1: f1.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>") f1.write("<!DOCTYPE concept PUBLIC \"-//OASIS//DTD DITA Concept//EN\" \"concept.dtd\">") f1.write("<concept id =\"") f1.write("\">") f1.write("<title></title>") f1.write("<conbody>") f1.write("<codeblock>") # 循环只负责写入文本文件的每一行内容 for line in f: f1.write(line) # 所有文本写完后,再添加闭合标签 f1.write("</codeblock>") f1.write("</conbody>") f1.write("</concept>")
为什么这样改?
原来的代码中,闭合标签在循环内部,每处理一行文本就会执行一次闭合操作;现在把这些语句移到循环外,只有当hello.txt里的所有内容都写入到<codeblock>标签内部后,才会依次闭合codeblock、conbody和concept标签,完美匹配你想要的输出结构。
运行修正后的代码,生成的copy.xml就会和你预期的一致啦~
内容的提问来源于stack exchange,提问作者Shilpa
相关产品推荐
相关产品推荐

