Estoy trabajando con Python v2, y estoy tratando de averiguar si puedes decir si una palabra está en una cadena.
He encontrado información sobre cómo identificar si la palabra está en la cadena, usando .find, pero hay una manera de hacer una declaración IF. Me gustaría tener algo como lo siguiente:
if string.find(word):
print 'success'
Gracias por cualquier ayuda.
pero tenga en cuenta que esto coincide con una secuencia de caracteres, no necesariamente una palabra completa, por ejemplo,
'word' in 'swordsmith'
es Verdadero. Si solo desea hacer coincidir palabras enteras, debe usar expresiones regulares:fuente
Si desea averiguar si una palabra completa está en una lista de palabras separadas por espacios, simplemente use:
Este elegante método es también el más rápido. En comparación con los enfoques de Hugh Bothwell y daSong:
Editar: Una ligera variante de esta idea para Python 3.6+, igualmente rápido:
fuente
contains_word("says", "Simon says: Don't use this answer")
find devuelve un número entero que representa el índice de dónde se encontró el elemento de búsqueda. Si no se encuentra, devuelve -1.
fuente
Puede dividir la cadena en las palabras y verificar la lista de resultados.
fuente
Esta pequeña función compara todas las palabras de búsqueda en un texto dado. Si todas las palabras de búsqueda se encuentran en el texto, devuelve la duración de la búsqueda, o de lo
False
contrario.También es compatible con la búsqueda de cadenas unicode.
uso:
fuente
Si emparejar una secuencia de caracteres no es suficiente y necesita unir palabras completas, aquí hay una función simple que hace el trabajo. Básicamente agrega espacios donde es necesario y busca eso en la cadena:
Esto supone que las comas y otros signos de puntuación ya se han eliminado.
fuente
Como está pidiendo una palabra y no una cadena, me gustaría presentar una solución que no sea sensible a los prefijos / sufijos e ignore mayúsculas y minúsculas:
Si sus palabras pueden contener caracteres especiales regex (como
+
), entonces necesitare.escape(word)
fuente
Manera avanzada de verificar la palabra exacta, que necesitamos encontrar en una cadena larga:
fuente
Usar regex es una solución, pero es demasiado complicado para ese caso.
Simplemente puede dividir el texto en una lista de palabras. Utilice el método de división ( separador , num ) para eso. Devuelve una lista de todas las palabras en la cadena, usando separador como separador. Si el separador no está especificado, se divide en todos los espacios en blanco (opcionalmente, puede limitar el número de divisiones a num ).
Esto no funcionará para cadenas con comas, etc. Por ejemplo:
Si también desea dividir en todas las comas, etc., use un argumento separador como este:
fuente
mystring.lower().split()
yword.lower()
creo que esto también es más rápido que el ejemplo de expresiones regulares.Puede agregar un espacio antes y después de "palabra".
De esta forma se busca el espacio antes y después de "palabra".
fuente