我有一份专利文档,它是一个文本文档中的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
或其他内容?您是否还有其他可以考虑的优化措施来加速这一过程?感谢,
卡梅伦
答案 0 :(得分:1)
而不是检查每一行,您可能想要加载整个文件内容并执行python正则表达式模式匹配器。这样,只需调用方法findall()即可减少检查和获取所有匹配的步骤。