Tengo una lista con 10 nombres y una lista con muchas de las frases. Sólo quiero para seleccionar las frases que contienen uno de esos nombres.
ArrayNames = [Mark, Alice, Paul]
ArrayPhrases = ["today is sunny", "Paul likes apples", "The cat is alive"]
En el ejemplo, ¿hay alguna manera de recoger sólo la segunda frase teniendo en cuenta la cara que contiene Pablo, dadas estas dos matrices? Esto es lo que he intentado:
def foo(x,y):
tmp = []
for phrase in x:
if any(y) in phrase:
tmp.append(phrase)
print(tmp)
x es el conjunto de frases, y es la matriz de nombres. Esta es la salida:
if any(y) in phrase:
TypeError: coercing to Unicode: need string or buffer, bool found
Estoy muy seguro acerca de la sintaxis he utilizado en relación con la construcción de cualquier (). ¿Alguna sugerencia?
Su uso de cualquier es incorrecta, haga lo siguiente:
ArrayNames = ['Mark', 'Alice', 'Paul']
ArrayPhrases = ["today is sunny", "Paul likes apples", "The cat is alive"]
result = []
for phrase in ArrayPhrases:
if any(name in phrase for name in ArrayNames):
result.append(phrase)
print(result)
Salida
['Paul likes apples']
Que está recibiendo un TypeError porque cualquier devuelve un bool y su tratando de buscar un bool dentro de una cadena ( if any(y) in phrase:
).
Tenga en cuenta que any(y)
las obras, ya que utilizará el Truthy valor de cada una de las cuerdas de y
.