在pyparsing

时间:2017-01-20 06:56:42

标签: python performance parsing pyparsing

使用pyparsing我希望将一个解析样式的匹配部分与名为names_list的大型字符串列表相匹配。这个列表相当庞大(约20000个条目)。

我有兴趣找到 fast 方法来匹配此列表。 pyparsing.Or表达式

names = pp.Or([pp.Keyword(name, caseless=True) for name in names_list ])

有效,但速度不是很快。

我该如何改进?关于这个的两个子问题:

  1. 是否值得用另一个运算符替换Or运算符(如果我可能按某种标准对names_list进行预排序)?

  2. 列表表达式names将在较大表达式的多个部分中出现(例如,在正常解析中以及另外在stopOn=表达式中。在两种情况下,它将匹配相同的解析字符串中的真实部分。有没有办法用它来加速匹配?

  3. 旁注:此问题有a sister question。在姐妹问题中,我立刻询问了很多事情 - 这就是为什么我把(未答复的)部分分开的原因。

0 个答案:

没有答案