Tan mal me explico ? a ver. quería buscar una cadena teniendo en cuenta unos patrones, los patrones pueden variar su orden (a, b, c OR b, c, a OR c, b ,a [...]) peor ya lo he resuelto.
Es un programa para el irc que conecta a una base de datos sqlite3 y responde según la pregunta, por ejemplo: pepito: Que es ubuntu? bot: pepito, http://es.wikipedia.org/wiki/Ubuntu La respuesta del bot es automática, en este caso los patrones son: "que es ubuntu", si el usuario pepito hubiera preguntado: pepito: ubuntu ... y eso que es ? La respuesta sería la misma, a eso me refería antes con independientemente del orden buscar la cadena. La función es esta: def SearchQuestion(name): cnn = sqlite3.connect("db/profe.db") pexc = cnn.cursor() patron, msg = pexc.execute(u'SELECT patron, respuesta FROM profe;').fetchone() cnn.close() name = name.rstrip("?").rstrip("¿") cicle = False if patron: for word in patron.split(): for word2 in name.split(): if word2 == word: cicle = True break if not cicle:return None cicle = False return msg return None Un saludo y perdona si no me explique correctamente. El 27 de enero de 2011 19:06, Jose Caballero <jcaballero....@gmail.com>escribió: > > > El 27 de enero de 2011 12:27, chakalinux <chakali...@gmail.com> escribió: > > Hola, intento buscar palabras en una cadena usando regexp, a ver si me >> explico, si tengo por ejemplo esta cadena: >> >> cad = u"hola como están" >> >> Quiero que me re me encuentre la cadena cad (puede variar) >> independientemente de su posición, (creo que se llama lookahead), o sea: >> >> "como estan ustedes hola" => true >> "hola, ustedes estan bien ? como están" => true >> [...] >> >> Solo he llegado a esto: >> >> re.match("(?=.*hola)(?=.*como)(?=.*est.n)", cad) >> >> Esto me funciona pero no me interesa ya que me devuelve siempre true >> aunque ponga: "<algo>hola <algo>como <algo>estan" y si quito ".*" no me >> funciona y solo me interesa que encuentra las palabras exactas >> independientemente del orden que estén. >> >> ... >> >> > > No he entendido nada. > > A ver si me aclaro... > > Tienes una cadena inicial, por ejemplo c1="hola como estan". > Luego tienes una segunda cadena c2. > Y ahora quieres ... > > (1) saber is c1 es parte de c2. > (2) saber si todas las palabras de c1 estan en c2. > (3) saber si alguna de las palabras de c1 esta en c2. > (4)... > > > > > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/