我有一个专利文件,该文件是一个文本文件中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或其他内容?您是否可以想到其他优化来加快此过程?谢谢,

卡梅伦

最佳答案

而不是检查每一行,您可能需要加载整个文件内容并执行python regex模式匹配器。这样,您只需调用方法findall()就可以减少检查和获取所有匹配项的步骤。

这是文档链接-https://docs.python.org/3/howto/regex.html

关于python - 加快读取xml文件的速度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38532805/

10-11 22:24
查看更多