Acora

mecanismo de pesquisa rápida de vários-chave para cordas de texto
Baixe Agora

Acora Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • BSD License
  • Preço:
  • FREE
  • Nome do editor:
  • Stefan Behnel
  • Site do editor:
  • http://behnel.de

Acora Tag


Acora Descrição

Motor de pesquisa de várias palavras-chave rápidas para cordas de texto Acora é 'fgrep' para python, um mecanismo de busca de texto multi-keyword rápido.Baseado em um conjunto de palavras-chave, gera um autômato de pesquisa (DFA) e o executa sobre a entrada de string, ou unicode ou bytes.acora é baseado no AHO -Coramick Algoritmo e um NFA-to-DFA PowerSet Construction.acora vem com uma implementação pitola pura e um módulo binário rápido escrito em Cython.Como eu uso? Importe o pacote: >>> de Acora importar acorabuildercollect algumas palavras-chave: >>> Builder = Acorabuilder ('AB', 'BC', 'de') >>> construtor.add ('A', 'B') Gere o mecanismo de pesquisa Acora para o conjunto de palavras-chave atual: >>> AC = BUILDER.BUILD () Pesquise uma string para todas as ocorrências: >>> AC.Findall ('ABC') >>> ac.findall (' abde ') Iterar sobre os resultados da pesquisa como eles entram: >>> para kw, pos em ac.finditer ('abde'): ... Imprimir ("% 2s "% (kw, pos)) A AB B de FAQs e receitas1. Como faço para executar uma busca gananciosa pelas palavras-chave mais longas correspondentes? >>> construtor = Acorabuilder ('A', 'AB', 'ABC') >>> AC = Builder.Build () >>> para KW, POS em AC.Finditer ('Abbabc'): ... Imprimir (kw) A AB A AB ABC >>> de ITERTools Import Groupby >>> do operador Import ItegerTer >>> Def Longest_Match (correspondências): ... para POS, Match_set em Groupby (partidas, ItemTer (1)) :. .. rendimento máximo (match_set) >>> para kw, pos em longest_match (ac.finditer ('abbabc')): ... Imprimir (KW) AB ABC2. Como faço para analisar linha a linha, pois o fgrep faz, mas com finais de linha arbitrária? >>> def group_by_lines (s, * palavras-chave): ... Builder = Acorabuilder ('\ r', '\ n', * palavras-chave) ... AC = Builder.Build () ...... Current_Line_Matches = [] ... Last_ending = Nenhum ... ... para kw, pos em ac.finditer (s): ... se kw em '\ r \ n': ... se last_ending == '\ r' e kw == '\ n': ... Continue # combinado CRLF ... rendimento tupla (Current_line_matches) ... Del Current_Line_Matches ... Last_ending = kw ... mais: ... Last_ending = Nenhum. .. acrentar_line_matches.apend (kw) ... rendimento tuple (Current_line_matches) >>> kwds = >>> para correspondências em group_by_lines ('A \ r \ r \ nbc \ R \ NDede \ N \ Nab ', * KWDS): ... Imprimir (fósforos) () () (' BC ',) (' de ',' de ') () (AB', aqui algumas características-chave de "Acora": · Funciona com cordas unicode e strings de byte · Cerca de 2-3x tão rápido quanto o mecanismo de expressão regular do Python para a maioria das informações · Encontra correspondências sobrepostas, isto é, todas as correspondências de todas as palavras-chave · Suporte para pesquisa insensível (~ 10x tão rápido quanto 're') · Libera o gil enquanto procurava · Implementação adicional de python pilhão puro (lento mas curto) · Suporte para Python 2.5+ e 3.x · Suporte para pesquisar em arquivos · Licença de BSD Permissiva Requisitos: · Pitão O que há de novo nesta versão: · Speed-up menor no loop do motor de busca interna · Alguma limpeza de código · Construído usando o citnão 0.12.1 (final)


Acora Software Relacionado