我的xml文件包含有关多项专利的信息:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE us-patent-grant SYSTEM "us-patent-grant-v45-2014-04-03.dtd" [ ]>
<us-patent-grant>
.
.
.
</us-patent-grant>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE us-patent-grant SYSTEM "us-patent-grant-v45-2014-04-03.dtd" [ ]>
<us-patent-grant>
.
.
.
</us-patent-grant>
我想为每个专利创建一个单独的xml文件。问题是该文件不是有效的XML文档。我尝试执行以下操作:
import xml.etree.ElementTree as x
path = r"C:\Users\XX\Downloads\ipg190423\ipg190423.xml"
d = []
s = ""
f = open(path)
for l in f:
if l == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n":
if len(s)>0:
d.append(s)
s = ""
s += l
d.append(s)
有什么主意吗?
答案 0 :(得分:1)
好吧,您可以使用正则表达式来标识
?xml version =“ 1.0” encoding =“ UTF-8”?
行。找到它后,您将以下各行读入另一个字符串/文件中,直到下一次出现或文件结尾为止。 或者,如果您不介意以字符串形式读取整个文件,则可以使用通常的str.split('...')
with open('workfile') as f:
data = f.read()
texts = data.split('?xml version="1.0" encoding="UTF-8"?')
并逐行
texts = list()
with open('workfile') as f:
text.append(f.readline())
if f.readline.find('?xml version="1.0" encoding="UTF-8"?') > 0:
list.append(text);
text = ''
然后您将获得一个文本列表,可以将其写入单个文件。
该代码未经测试,因此您可能需要对其进行修复