HOWTO · Python
Compruebe si una cadena contiene Word en Python
La instrucción if / in se puede usar para verificar si una palabra específica está dentro de una variable de cadena o no en Python.
En esta página
Para comprobar si un texto aparece en una cadena de Python, usa el operador in. Devuelve un valor booleano y distingue entre mayúsculas y minúsculas.
Usa la sentencia if/in en Python para comprobar si una cadena contiene una palabra
Para una comprobación sencilla de subcadenas, usa in directamente en una condición if. Devuelve un valor booleano y la comparación distingue entre mayúsculas y minúsculas.
text = "This contains a word"
if "word" in text:
print("Found")
else:
print("Not Found")
El operador busca una secuencia de caracteres en cualquier parte de la cadena. No exige que coincida una palabra completa: "is" in "This" es verdadero porque esos caracteres aparecen al final de This. Esto puede dar un falso positivo si lo que buscas es una palabra independiente.
Si el texto separa las palabras únicamente con espacios normales, añadir un espacio al principio y al final y buscar el término rodeado de espacios puede servir como solución sencilla: " is " in (" " + text + " "). Sin embargo, no trata de forma uniforme la puntuación, las tabulaciones, los saltos de línea ni otros separadores. Si estos importan, usa un patrón con límites de palabra o divide el texto en palabras.
Usa el método find() de Python para comprobar si una cadena contiene una palabra
find() también busca una subcadena y devuelve el índice donde aparece por primera vez. Si no encuentra el texto solicitado, devuelve -1. Compara el resultado explícitamente con -1; no uses el índice como condición. El índice 0 es falso en una condición booleana, mientras que -1 es verdadero.
text = "word appears here"
position = text.find("word")
if position != -1:
print("Found at index", position)
else:
print("Not Found")
Así se reconoce correctamente una coincidencia al principio de la cadena. Al igual que in, find() busca subcadenas, no palabras completas. Elige este método cuando necesites conocer la posición además de comprobar si hay una coincidencia.
Usa expresiones regulares en Python para comprobar si una cadena contiene una palabra
Usa re.search() cuando la búsqueda necesite un patrón, por ejemplo, para encontrar un término delimitado por límites de palabra. En una expresión regular, \b marca la transición entre un carácter de palabra y uno que no lo es.
import re
text = "This contains a word."
if re.search(r"\bword\b", text):
print("Found")
else:
print("Not Found")
El patrón sin procesar r"\bword\b" coincide con word como palabra independiente según las reglas \w de Python. Esas reglas quizá no coincidan con la definición de palabra de todas las aplicaciones, sobre todo si se necesita una tokenización especializada o límites específicos de un idioma. Para búsquedas normales de subcadenas, in es más sencillo.
Usa el método index() con manejo de excepciones en Python para comprobar si una cadena contiene una palabra
index() devuelve el primer índice coincidente, igual que find(), pero si la subcadena no aparece lanza ValueError en lugar de devolver -1. Gestiona esa excepción cuando sea posible que no haya coincidencia y necesites el índice si la encuentras.
text = "This contains a word"
try:
position = text.index("word")
print("Found at index", position)
except ValueError:
print("Not Found")
El bloque try gestiona una búsqueda satisfactoria; el bloque except ValueError gestiona el caso en que no se encuentra la subcadena. Si solo necesitas un valor booleano, in expresa esa intención más directamente.
Conclusión
Usa in para comprobar si una subcadena aparece normalmente y recuerda que distingue entre mayúsculas y minúsculas y puede coincidir con caracteres dentro de una palabra más larga. Usa un patrón re.search() con límites de palabra cuando su definición de palabra se ajuste al texto. Elige find() si necesitas un índice y que la ausencia se indique con -1, o index() si quieres gestionar una coincidencia ausente mediante ValueError.