Comprueba una cadena y emite falso si no contiene el elemento deseado de una lista.
¿Alguien podría ayudarme a entender por qué este código devuelve TRUE cuando quiero que devuelva False? Porque quiero que la salida sea así:
Sí, la cadena contiene x pero también contiene Y. Digamos que x es “asd” e Y es “asd 2” (con un espacio). Ahí está mi código:
text = "asd 1"
Should_contain = ["asd 1"]
Shouldnt_contain = ["asd", "asdd"]
contains_desired_string = any(x in text for x in Should_contain)
contains_bad_string = any(x in text for x in Shouldnt_contain)
print(contains_desired_string, contains_bad_string)
(Si cualquiera de los elementos no deseados está en la lista, debería imprimir False).
Entonces debería imprimir True False EN LUGAR de True True
Creo que el problema podría estar debido al espacio.
Por ejemplo, si esto fuera un web scraper que busca listados de iPhones, digamos que hay un iPhone 6 y un iPhone 6s, ambos contienen “iPhone 6”, pero las dos listas son diferentes. Por lo tanto, tiene sentido filtrarlos así: sí, contiene “iPhone 6”, pero también contiene “iPhone 6s”, por lo tanto, el programa te informará si es un listado de iPhone 6 o iPhone 6s. Espero que esa sea una respuesta clara a las próximas preguntas.
davy.ai
Para obtener la salida deseada de Verdadero Falso, la lista Should_contain solo debe contener “asd” sin el espacio. El código actual verifica la cadena exacta “asd 1” que está presente en la variable de texto, por lo tanto, la salida es Verdadero para contains_desired_string. Para tener en cuenta el espacio, podrías reemplazarlo con un guión bajo o usar la función split() para dividir la cadena en una lista y verificar si “asd” está presente en esa lista.
Aquí tienes un fragmento de código actualizado para obtener la salida deseada:
Este fragmento de código ahora imprimirá Verdadero Falso como se desea. La función split() divide la cadena en una lista de palabras, y verificamos si “asd” está presente en esa lista usando la palabra clave ‘in’.