gpt4 book ai didi

python - 在pyparsing中匹配大量包含空格的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:06 26 4
gpt4 key购买 nike

pyparsing我需要为像

这样的表达式编写一个匹配器
a + names + c 

a = pp.OneOrMore(pp.Word(pp.alphas))
c = pp.OneOrMore(pp.Word(pp.nums))

names匹配字符串列表names_list中的多个条目之一。

这两个并发症是:

  • names_list 中的条目可以包含空格
  • 匹配需要不区分大小写
  • names_list 相当大(约 20000 个条目)
  • 我试过了

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

    这不适用于带有空格的条目,而且我担心这不是一种非常高效的编写方式。

    有什么想法可以让它适用于条目中的空格并可能使其执行得更快吗?

    最佳答案

    部分答案:

    空格问题可以通过正确的 stopOn 函数解决:

    def last_occurrence_of(expr):
    return expr + ~pp.FollowedBy(pp.SkipTo(expr))

    names_kw_list = [pp.Keyword(word, caseless=True)
    for word in names_list ]
    names = pp.Or(names_kw_list)("names")
    a = pp.OneOrMore(pp.Word(pp.alphas), stopOn=last_occurrence_of(names))("A")
    c = pp.OneOrMore(pp.Word(pp.nums))("C")

    expr = a + names + c

    这指示a不要吃掉names字符串。

    但是性能会下降,因为现在 stopOn 表达式中使用了长名称列表。

    关于python - 在pyparsing中匹配大量包含空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41736402/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com