我有一个专利文档,它是一个文本文档中连接字符串的xml文件。我正在寻找将它分成单独的文档,每个单独的XML文件。我的代码有效,但我需要加快速度。我的代码是这样的:加速读取xml文件
import time
count = 0
filestr = ''
line = 'x'
start_time = time.time()
with open('C:/Users/RNCZF01/Documents/Cameron-Fen/Economics-Projects/Patent-project/similarity/Patents/ipg121225.xml') as txtfile:
while line:
line = txtfile.readline()
if '<?xml version="1.0" encoding="UTF-8"?>' in line:
filestr = str(count) + '.xml'
count += 1
with open('C:/Users/RNCZF01/Documents/Cameron-Fen/Economics-Projects/Patent-project/similarity/Patents/2012-12-25/' + filestr, 'ab') as textfile:
textfile.write(line)
textfile.write('\n')
print("--- %s seconds ---" % (time.time() - start_time))
我可以想到加速它的一个优化是if语句。它检查该行是否包含xml头文件:<?xml version="1.0" encoding="UTF-8"?>
。如果我可以检查该行是否为<?xml version="1.0" encoding="UTF-8"?>
,则可能会明显更快。但是当我写if line == '<?xml version="1.0" encoding="UTF-8"?>':
它并没有拿起线。我是否需要在最后包含\n
?有没有其他的优化可以加速这个过程?谢谢,
卡梅伦
这个文件有多大?你能否将它全部加载到内存中并分割文档声明? – Thtu
另外:我很想听听你的专利XML文件遵循什么XML模式。 – kjhughes
所以我现在正在测试它的一小部分文件,但总文件是23GB。我不认为我可以访问群集,但不确定。我可以对它进行多线程处理,这是我会做的,但对其他优化很感兴趣。至于XML模式,我不确定,但是这里是一个示例文件的链接:https://drive.google.com/open?id=0B2Kz5NTvWjJud3VGQS16Rks4alU。我从谷歌专利页面下载了这些文件:https://www.google.com/googlebooks/uspto-patents-grants-text.html – www3