Acora

Software captura de pantalla:
Acora
Detalles de software:
Versión: 1.8
Fecha de carga: 11 May 15
Promotor: Stefan Behnel
Licencia: Libre
Popularidad: 8

Rating: 3.0/5 (Total Votes: 1)

Acora es 'fgrep' para Python, un motor de búsqueda de texto de varias palabras clave rápido.
Sobre la base de un conjunto de palabras clave, genera un autómata de búsqueda (DFA) y lo ejecuta sobre entrada de cadena, ya sea Unicode o bytes.
Acora se basa en el algoritmo de Aho-Corasick y una construcción powerset NFA-a-DFA.
Acora viene con una implementación de Python puro y un módulo binario rápido escrito en Cython.
¿Cómo lo uso?
Importe el paquete:
>>> From acora AcoraBuilder importación
Recoge algunas palabras clave:
>>> Constructor = AcoraBuilder ('ab', 'bc', 'de')
>>> Builder.add ('a', 'b')
Generar el buscador Acora para el conjunto de palabras clave actual:
>>> Ac = builder.build ()
Buscar una cadena para todas las ocurrencias:
>>> Ac.findall ('abc')
[('A', 0), ('ab', 0), ('b', 1), ('bc', 1)]
>>> Ac.findall ('abde')
[('A', 0), ('ab', 0), ('b', 1), ('de', 2)]
Iterar sobre los resultados de búsqueda a medida que llegan:
>>> Por kw, pos en ac.finditer ('abde'):
... De impresión ("% 2s [% d]"% (kw, pos))
& Nbsp; a [0]
ab [0]
& Nbsp; b [1]
de [2]
Preguntas frecuentes y recetas
1. ¿Cómo realizar una búsqueda ávida de los más largos de palabras clave que coinciden?
& Nbsp; >>> constructor = AcoraBuilder ('a', 'ab', 'abc')
& Nbsp; >>> ac = builder.build ()
& Nbsp; >>> por kw, pos en ac.finditer ('abbabc'):
& Nbsp; ... print (kw)
& Nbsp; un
& Nbsp; ab
& Nbsp; un
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> from itertools importar groupby
& Nbsp; >>> del operador itemgetter importación
& Nbsp; >>> def longest_match (partidos):
& Nbsp; ... para pos, match_set en groupby (partidos, itemgetter (1)):
& Nbsp; ... rendimiento máximo (match_set)
& Nbsp; >>> por kw, pos en longest_match (ac.finditer ('abbabc')):
& Nbsp; ... print (kw)
& Nbsp; ab
& Nbsp; abc
2. ¿Cómo puedo analizar la línea por línea, como fgrep hace, pero con finales de línea arbitrarias?
& Nbsp; >>> def group_by_lines (s *, palabras clave):
& Nbsp; ... constructor = AcoraBuilder (' r', ' n', * palabras clave)
& Nbsp; ... ac = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = Ninguno
& Nbsp; ...
& Nbsp; ... por kw, pos en ac.finditer (s):
& Nbsp; ... si kw en ' r n':
& Nbsp; ... si last_ending == ' r' y kw == ' n':
& Nbsp; ... seguir # combina CRLF
& Nbsp; ... tupla rendimiento (current_line_matches)
& Nbsp; ... Del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... else:
& Nbsp; ... last_ending = Ninguno
& Nbsp; ... current_line_matches.append (kw)
& Nbsp; ... tupla rendimiento (current_line_matches)
& Nbsp; >>> kwds = ['ab', 'bc', 'de']
& Nbsp; >>> coincidencias en group_by_lines ('a r r nbc r Ndede n NAB, * kwds):
& Nbsp; ... impresión (partidos)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ('bc',)
& Nbsp; ('de', 'de')
& Nbsp; ()
& Nbsp; ('ab',)

Características

  • trabaja con cadenas Unicode y cadenas de bytes
  • sobre 2-3x tan rápido como motor de expresiones regulares de Python para la mayor parte de entrada
  • encuentra coincidencias superposición, es decir, todos los partidos de todas las palabras clave
  • Soporte para el caso de búsqueda insensible (~ 10 veces más rápido que 're')
  • libera al GIL durante la búsqueda
  • adicional implementación de Python puro (lento pero corto)
  • soporte para Python 2.5+ 3.x
  • Soporte para la búsqueda en los archivos
  • licencia BSD permisiva

¿Cuál es nuevo en esta versión:

  • Soporte salmuera para los motores de búsqueda pre-construidos
  • optimizaciones de rendimiento en constructor
  • análisis Unicode está optimizado para Python 3.3 y más tarde
  • ya no se vuelve a compilar las fuentes cuando se instala Cython, a menos que se pasa la opción --with-Cython a setup.py (requiere Cython 0,20 +)
  • acumulación fallado con versiones recientes Cython
  • construido utilizando Cython 0.20.1

¿Qué hay de nuevo en la versión 1.6:

  • Edificio sustancialmente más rápido autómata
  • ya no incluye repo .hg en la distribución fuente
  • construido utilizando Cython 0.15 (RC0)

¿Cuál es nuevo en la versión 1.5:

  • Cython compilado construcción NFS-2-DFA corre sustancialmente más rápido
  • siempre construir módulos de extensión, incluso si no está instalado Cython
  • - no-compilar interruptor en setup.py para evitar la construcción del módulo de extensión
  • construido utilizando Cython 0.14.1 (RC2)

¿Cuál es nuevo en la versión 1.4:

  • menor aceleración en bucle buscador interno
  • algo de limpieza de código
  • construido utilizando Cython 0.12.1 (final)

Requisitos

  • Python

Comentarios a la Acora

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!