【发布时间】:2021-08-19 21:11:24
【问题描述】:
我有一大堆化学名称(~30,000,000)和一大堆以 XML 形式存储在服务器上的文章(~34,000)。
我正在尝试将每个 XML 解析为一个字符串,以提及一个或多个化学名称。最终结果将是一个制表符分隔的文本文件,其中我有一个文件名,然后是文件中出现的化学品列表。
当前的问题是我有一个 for 循环,它遍历一个 for 循环中的所有化学物质,该循环遍历所有 XML。嵌套在 for 循环中的是 python 中的 string in string 操作。有什么方法可以通过使用比string in string 更高效的操作或重新排列 for 循环来提高性能?
我的伪代码:
for article is articles:
chemicals_in_article = []
temp_article = article.lower()
for chemical in chemicals:
if chemical in temp_article: chemicals_in_article.append(chemical)
#Write the results into a text file
output_file.write(article.file_name)
for chemical in chemicals_in_article:
output_file.write("\t" + chemical)
output_file.write("\n")
【问题讨论】:
-
1) 解析xtree或libxml2中的XML文件; 2) 使用 xpath 查询该结果。快速、简单、准确。
-
@dawg 避免匹配标签和属性可能是个好主意(尽管由于域可能与文本几乎没有重叠)。我仍然会编译一个 trie 并转换为正则表达式,然后使用 XPath
matches,否则它不会很快。 -
@Amadan:同意。但是,从您的回答中不清楚如何将 XML 解析为 Trie。
-
@dawg 我在回答中澄清了。