[Python-es] Buscar varios elementos en una lista

Daniel Garcia Moreno dani en danigm.net
Mar Feb 16 16:52:16 CET 2010


2010/2/16 Oswaldo Hernández <listas en soft-com.es>:
> Oswaldo Hernández escribió:
>>
>> Hola,
>>
>> ...
>> La pregunta es ¿Existe alguna forma mas compacta de hacerlo?
>>
>
> Gracias Daniel, marmolro, Kiko y César. Os respondo aqui a todos.
>
>> set(valores).intersection(set(datos))
>
> Creo que esta seria la idónea para el ejemplo que he puesto, pero una de las
> funciones que busco (la principal) es buscar texto en texto:
>
> valores = ("ab", "ale", "e de")
> datos = "esto es una frase de ejemplo"
>
> Si buscara palabras completas lo solucionaría haciendo datos.split(), pero
> debo buscar también dentro de cada palabra. Lástima.
>
> En cuanto a numpy, no se si valdría para este caso.
>
>> any(v in datos for v in valores)
>
> Esto creo que es lo que mejor se adapta a mis intenciones. (me merezco dos
> coscorrones por haber olvidado la funcion any() ;) )
>

Si lo que vas a buscar es texto también puedes hacer uso de
expresiones regulares:

import re

valores = ("ab", "ale", "e de")
expr = re.compile("(%s)" % "|".join(valores))
datos = "esto es una frase de ejemplo"

bool(expr.search(datos))



Más información sobre la lista de distribución Python-es