¿Cuál es una manera elegante de buscar una cadena dentro de otra cadena en Python, pero solo si la subcadena está dentro de palabras completas, no es parte de una palabra?Buscar subcadena en cadena pero solo si las palabras completas?
Quizás un ejemplo demostrará lo que quiero decir:
string1 = "ADDLESHAW GODDARD"
string2 = "ADDLESHAW GODDARD LLP"
assert string_found(string1, string2) # this is True
string1 = "ADVANCE"
string2 = "ADVANCED BUSINESS EQUIPMENT LTD"
assert not string_found(string1, string2) # this should be False
¿Cómo puedo mejor escribir una función llamada string_found que va a hacer lo que necesito? Pensé que tal vez podría eludir con algo como esto:
def string_found(string1, string2):
if string2.find(string1 + " "):
return True
return False
Pero que no se siente muy elegante, y además no se correspondería con cadena1 si era al final de cadena2. Tal vez necesito una expresión regular? (miedo arg regex)
De nada :) –
Solo asegúrese de "guardar" las pastillas del teclado de código, para que no caduquen. (Incluyo un enlace en un comentario del teclado numérico, solo para mis propias notas más tarde, también.) –
Para aquellos que quieren asegurarse de que la puntuación y el espacio en blanco se consideren un delimitador de palabra completa válido ... modifique el código anterior como sigue: '' 'no en (string.whitespace + string.punctuation)' '' También tenga en cuenta que esta función es más del doble de eficiente que la alternativa RegEx propuesta, así que ... si la usa mucho, esta función es el camino a seguir. –