Acora

Szoftver screenshot:
Acora
Szoftver adatai:
Változat: 1.8
Feltöltés dátuma: 11 May 15
Fejlesztő: Stefan Behnel
Engedély: Ingyenes
Népszerűség: 8

Rating: 3.0/5 (Total Votes: 1)

Acora van "fgrep" Python, gyors multi-kulcsszószövegekre kereső.
Ennek alapján egy sor kulcsszavak, ez egy keresési automata (DFA) és fut át ​​húr bemenet, akár unicode vagy bájt.
Acora alapul Aho-Corasick algoritmus és egy NFA-to-DFA PowerSet építése.
Acora jön mind a tiszta Python végrehajtását és gyors bináris modul írt Cython.
Hogyan kell használni?
Importálja a csomagot:
>>> From acora import AcoraBuilder
Gyűjtse össze néhány kulcsszavak:
>>> Builder = AcoraBuilder ("ab", "bc", "de")
>>> Builder.add ("a", "b")
Elkészíti a Acora kereső az aktuális kulcsszókészlet:
>>> Ac = builder.build ()
Keresés a karakterlánc minden előfordulását:
>>> Ac.findall ("abc")
[('A', 0), ('ab', 0), ('b', 1), ("bc", 1)]
>>> Ac.findall ("ABDE)
[('A', 0), ('ab', 0), ('b', 1), ('de', 2)]
Végighaladni a keresési eredményeket, ahogy jönnek:
>>> For kw, pos in ac.finditer ("ABDE"):
... Print ("% 2s [% d]"% (kw, pos))
& Nbsp; a [0]
ab [0]
& Nbsp; b [1]
de [2]
GYIK és receptek
1. Hogyan tudom futtatni a mohó keresés a leghosszabb megfelelő kulcsszavakat?
& Nbsp; >>> builder = AcoraBuilder ('a', 'ab', 'abc')
& Nbsp; >>> ac = builder.build ()
& Nbsp; >>> for kw, pos in ac.finditer ("abbabc"):
& Nbsp; ... print (kw)
& Nbsp; a
& Nbsp; ab
& Nbsp; a
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> from itertools importálni GroupBy
& Nbsp; >>> from üzemeltető import itemgetter
& Nbsp; >>> def longest_match (mérkőzések):
& Nbsp; ... POS, match_set a GroupBy (gyufa, itemgetter (1)):
& Nbsp; ... hozamot max (match_set)
& Nbsp; >>> for kw, pos in longest_match (ac.finditer ("abbabc)):
& Nbsp; ... print (kw)
& Nbsp; ab
& Nbsp; abc
2. Hogyan sikerült feldolgozni line-by-line, mint fgrep csinál, de tetszőleges sorvégződések?
& Nbsp; >>> def group_by_lines (s, * kulcsszavak):
& Nbsp; ... építőmester = AcoraBuilder (' r', ' n', * kulcsszavak)
& Nbsp; ... ac = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = None
& Nbsp; ...
& Nbsp; ... a kw, pos in ac.finditer (ek):
& Nbsp; ... ha kw in ' r n ":
& Nbsp; ... ha last_ending == ' r' és kw == ' n':
& Nbsp; ... tovább # kombinált CRLF
& Nbsp; ... hozamot tuple (current_line_matches)
& Nbsp; ... del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... else:
& Nbsp; ... last_ending = None
& Nbsp; ... current_line_matches.append (kw)
& Nbsp; ... hozamot tuple (current_line_matches)
& Nbsp; >>> kwds = ['ab', 'bc', 'de']
& Nbsp; >>> számára mérkőzések group_by_lines ('a r r NBC r ndede n fülönfog', * kwds):
& Nbsp; ... print (találat)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ("bc",)
& Nbsp; ("de", "de")
& Nbsp; ()
& Nbsp; ("ab",)

Tulajdonságok :

  • működik unicode húrok és byte húrok
  • a 2-3x olyan gyors, mint a Python reguláris kifejezés motorja a legtöbb input
  • találja átfedő mérkőzést, azaz az összes mérkőzést kulcsszavai
  • támogatását a kis- és nagybetűket keresés (~ 10x olyan gyors, mint az "újrahasznosítás")
  • megszabadítja a GIL keresése közben
  • további (lassú, de rövid) tiszta Python végrehajtása
  • támogatását Python 2.5+ és 3.x
  • támogatását keresi a fájlokat
  • megengedő BSD licenc

Mi az új ebben a kiadásban:

  • lé támogatja az előre beépített keresők
  • teljesítmény optimalizálással a builder
  • Unicode elemzés optimalizált Python 3.3 és újabb
  • már nem újrafordítja források amikor Cython telepítve, hacsak --with- cython opció át setup.py (szükséges Cython 0,20 +)
  • építmények meghiúsult elmúlt Cython változat
  • épült Cython 0.20.1

Mi az új 1.6:

  • lényegesen gyorsabb automata épület
  • már nem tartalmazza .hg repo forrásában
  • épült Cython 0,15 (RC0)

Mi az új 1.5-ös verzióban:

  • Cython összeállított NFS-2-DFA építési fut lényegesen gyorsabban
  • Mindig építeni bővítő modulok is, ha Cython nincs telepítve
  • - nem fordítanod kapcsoló setup.py megelőzésére kiegészítő modul épület
  • épült Cython 0.14.1 (RC2)

Mi az új 1.4-es:

  • kisebb sebesség-up in belső kereső loop
  • néhány kódot razzia
  • épült Cython 0.12.1 (végleges)

követelmények :

  • Python

Hozzászólások a Acora

Hozzászólás nem található
Megjegyzés hozzáadása
Kapcsolja be a képeket!