Acora

Screenshot Software:
Acora
Mga detalye ng Software:
Bersyon: 1.8
I-upload ang petsa: 11 May 15
Nag-develop: Stefan Behnel
Lisensya: Libre
Katanyagan: 8

Rating: 3.0/5 (Total Votes: 1)

Acora ay 'fgrep' para sa Python, isang mabilis na multi-search keyword text engine.
Batay sa isang hanay ng mga keyword, ito ay bumubuo ng isang paghahanap automaton (DFA) at nagpapatakbo ng mga ito sa paglipas ng string input, alinman unicode o bytes.
Acora ay batay sa Aho-Corasick algorithm at isang NFA-to-DFA Powerset construction.
Acora lumapit sa parehong isang purong Python pagpapatupad at ang isang mabilis na binary module nakasulat sa Cython.
Paano ko gagamitin ito?
I-import ang package:
>>> Mula acora import AcoraBuilder
Kolektahin ang ilang mga keyword:
>>> Builder = AcoraBuilder ('AB', 'BC', 'de')
>>> Builder.add ('a', 'b')
Buuin ang Acora search engine para sa kasalukuyang set ng keyword:
>>> AC = builder.build ()
Maghanap ng isang string para sa lahat ng mga pangyayari:
>>> Ac.findall ('abc')
[('A', 0), ('AB', 0), ('b', 1), ('BC', 1)]
>>> Ac.findall ('abde')
[('A', 0), ('AB', 0), ('b', 1), ('de', 2)]
Umulit sa mga resulta ng paghahanap pati na nanggaling sa mga ito ay:
>>> Para kw, pos in ac.finditer ('abde'):
... Print ("% 2s [% d]"% (kw, pos))
& Nbsp; a [0]
AB [0]
& Nbsp; b [1]
de [2]
FAQ at recipes
1. paano ko patakbuhin ang isang sakim na mga paghahanap para sa pinakamahabang matching keywords?
& Nbsp; >>> builder = AcoraBuilder ('a', 'AB', 'abc')
& Nbsp; >>> AC = builder.build ()
& Nbsp; >>> para kw, pos in ac.finditer ('abbabc'):
& Nbsp; ... print (kw)
& Nbsp; a
& Nbsp; AB
& Nbsp; a
& Nbsp; AB
& Nbsp; abc
& Nbsp; >>> mula itertools import GroupBy
& Nbsp; >>> mula operator import itemgetter
& Nbsp; >>> def longest_match (matches):
& Nbsp; ... para pos, match_set in GroupBy (matches, itemgetter (1)):
& Nbsp; ... ani max (match_set)
& Nbsp; >>> para kw, pos in longest_match (ac.finditer ('abbabc')):
& Nbsp; ... print (kw)
& Nbsp; AB
& Nbsp; abc
2. paano ma-parse ko line-by-line, bilang fgrep ay, ngunit may mga arbitrary line endings?
& Nbsp; >>> def group_by_lines (s, * keywords):
& Nbsp; ... builder = AcoraBuilder (' r', ' n', * keywords)
& Nbsp; ... AC = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = Wala
& Nbsp; ...
& Nbsp; ... para kw, pos sa (mga) ac.finditer:
& Nbsp; ... kung kw in ' r n':
& Nbsp; ... kung last_ending == ' r' at kw == ' n':
& Nbsp; ... magpatuloy # pinagsama CRLF
& Nbsp; ... ani tuple (current_line_matches)
& Nbsp; ... del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... pa ang:
& Nbsp; ... last_ending = Wala
& Nbsp; ... current_line_matches.append (kw)
& Nbsp; ... ani tuple (current_line_matches)
& Nbsp; >>> kwds = ['AB', 'BC', 'de']
& Nbsp; >>> para sa mga tugma sa group_by_lines ('a r r nbc r ndede n dakpin', * kwds):
& Nbsp; ... print (matches)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ('BC',)
& Nbsp; ('de', 'de')
& Nbsp; ()
& Nbsp; ('AB',)

Features :

  • gumagana sa mga string unicode at mga string ng byte
  • tungkol 2-3x bilang mabilis na expression engine sawa regular para sa karamihan ng input
  • nahahanap magkakapatong matches, ibig sabihin ang lahat ng mga tugma ng lahat ng mga keyword
  • suporta para sa case insensitive search (~ 10x bilang mabilis na 're')
  • nagpapalaya sa Gil habang naghahanap
  • karagdagang (mabagal ngunit maikling) purong Python pagpapatupad
  • suporta para sa Python 2.5+ at 3.x
  • suporta para sa paghahanap sa mga file
  • mapagpahintulot BSD lisensya

Ano ang bago sa release na ito:

  • atsara suporta para sa mga pre-built na mga search engine
  • optimisations pagganap sa builder
  • Unicode parsing ay sinulit para sa Python 3.3 at mas bago
  • Hindi na recompiles pinagkukunan kapag Cython ay nai-install, maliban --with-cython option ay lumipas na setup.py (nangangailangan Cython 0.20 +)
  • Nabigo ang mga kamakailan-lamang na bersyon Cython build
  • binuo gamit Cython 0.20.1

Ano ang bago sa bersyon 1.6:

  • kalahatan mas mabilis automaton building
  • Hindi na nagsasama .hg repo sa source pamamahagi
  • binuo gamit Cython 0.15 (RC0)

Ano ang bago sa bersyon 1.5:

  • nagpapatakbo Cython naipon construction NFS-2-DFA kalahatan mas mabilis
  • laging bumuo ng extension modules kahit Cython Hindi naka-install
  • - walang-compile lumipat sa setup.py upang maiwasan building extension module
  • binuo gamit Cython 0.14.1 (RC2)

Ano ang bago sa bersyon 1.4:

  • minor speed-up sa loob ng loop search engine
  • ilang mga code paglilinis
  • binuo gamit Cython 0.12.1 (huling)

Kinakailangan :

  • sawa

Mga komento sa Acora

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!