Acora

Screenshot Software:
Acora
Detalii soft:
Versiune: 1.8
Incarca data: 11 May 15
Producător: Stefan Behnel
Licenţă: Gratuit
Popularitate: 8

Rating: 3.0/5 (Total Votes: 1)

Acora este "fgrep" pentru Python, un multi-cheie motor de căutare de text rapid.
Pe baza unui set de cuvinte cheie, aceasta generează un automat de căutare (DFA) si ruleaza-l peste intrare string, fie unicode sau bytes.
Acora se bazează pe algoritmul Aho-Corasick și o construcție multimea partilor RNP-to-DFA.
Acora vine cu atât o implementare Python pură și un modul binar rapid scris in Cython.
Cum se utilizează?
Importa pachetul:
>>> Din Acora AcoraBuilder import
Colecteze unele cuvinte cheie:
>>> Constructor = AcoraBuilder ('ab', 'bc', 'de')
>>> Builder.add ('a', 'b')
Genera motorul de căutare Acora pentru setul de cuvinte cheie actuală:
>>> Ac = builder.build ()
Căutați un șir de toate aparițiile:
>>> Ac.findall ("ABC")
[('A', 0), ('ab', 0), ('b', 1), ("bc", 1)]
>>> Ac.findall ("abde")
[('A', 0), ('ab', 0), ('b', 1), ('de', 2)]
Repeta peste rezultatele de căutare ca au venit din:
>>> Pentru kw, poz in ac.finditer ("abde"):
... Imprimare ("% 2s [% d]"% (kw, pos))
& Nbsp; a [0]
ab [0]
& Nbsp; b [1]
de [2]
Întrebări frecvente și rețete
1. cum se execută o căutare lacom pentru cele mai lungi cuvinte cheie potrivire?
& Nbsp; >>> constructor = AcoraBuilder ('a', 'ab', 'ABC')
& Nbsp; >>> ac = builder.build ()
& Nbsp; >>> pentru kw, poz in ac.finditer ("abbabc"):
& Nbsp; ... print (kw)
& Nbsp; o
& Nbsp; ab
& Nbsp; o
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> din itertools import groupby
& Nbsp; >>> de la operatorul itemgetter import
& Nbsp; >>> longest_match def (meciuri):
& Nbsp; ... pentru pos, match_set în groupby (meciuri, itemgetter (1)):
& Nbsp; ... randament maxim (match_set)
& Nbsp; >>> pentru kw, poz in longest_match (ac.finditer ("abbabc")):
& Nbsp; ... print (kw)
& Nbsp; ab
& Nbsp; abc
2. Cum analiza-line de linie, ca fgrep nu, dar cu terminatii de linie arbitrare?
& Nbsp; >>> def group_by_lines (s, * cuvinte cheie):
& Nbsp; ... constructor = AcoraBuilder (' r', ' n', * cuvinte-cheie)
& Nbsp; ... ac = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = Nici unul
& Nbsp; ...
& Nbsp; ... pentru kw, poz în ac.finditer (s):
& Nbsp; ... daca kw in ' r n':
& Nbsp; ... dacă last_ending == ' r' și kW == ' n':
& Nbsp; ... continua # combinate CRLF
& Nbsp; ... randament tuple (current_line_matches)
& Nbsp; ... del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... altfel:
& Nbsp; ... last_ending = Nici unul
& Nbsp; ... current_line_matches.append (kw)
& Nbsp; ... randament tuple (current_line_matches)
& Nbsp; >>> kwds = ['ab', 'bc', 'de']
& Nbsp; >>> pentru meciurile din group_by_lines ("o r r NBC r ndede n NAB", * kwds):
& Nbsp; ... imprimare (meciuri)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ('bc',)
& Nbsp; ("de", "de")
& Nbsp; ()
& Nbsp; ("ab",)

Caracteristici :

  • funcționează cu siruri de caractere Unicode și siruri de caractere octet
  • despre 2-3x fel de repede ca motor expresie regulată Python pentru majoritatea intrare
  • găsește meciurile se suprapun, adică toate meciurile din toate cuvintele cheie
  • suport pentru cazul căutare insensibil (~ 10x la fel de repede ca "re")
  • eliberează GIL în timp ce căutarea
  • suplimentară de punere în aplicare (lent, dar de scurtă durată) Python pur
  • suport pentru Python 2.5+ și 3.x
  • sprijin pentru căutarea în fișierele
  • licență BSD permisiv

Ce este nou în această versiune:

  • suport marinate pentru motoarele de cautare pre-construite
  • optimizări de performanță în builder
  • Unicode parsarea este optimizat pentru Python 3.3 și mai târziu
  • nu mai recompiles surse când este instalat Cython, cu excepția cazului în --with-cython opțiunea este trecut la setup.py (necesită Cython 0.20 +)
  • construi nu cu versiunile recente Cython
  • construit folosind Cython 0.20.1

Ce este nou în versiunea 1.6:

  • de construcție în mod substanțial mai rapid automat
  • nu mai include repo .hg în distribuția sursă
  • construit folosind Cython 0,15 (RC0)

Ce este nou în versiunea 1.5:

  • Cython compilate constructii NFS-2-DFA rulează în mod substanțial mai repede
  • construi întotdeauna module de extensie, chiar dacă Cython nu este instalat
  • - nu-compila comuta în setup.py pentru a preveni construirea modul de extensie
  • construit folosind Cython 0.14.1 (RC2)

Ce este nou în versiunea 1.4:

  • minor speed-up în interior bucla motor de căutare
  • un cod de curățare
  • construit folosind Cython 0.12.1 (final)

Cerințe :

  • Python

Comentarii la Acora

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!