питон слово из списка - PullRequest
0 голосов
/ 12 февраля 2019

Я создал небольшую программу, которая ищет определенное слово в списке.Кажется, что это работает, но я хотел бы, чтобы оно также распечатало найденное слово.

Пока у меня есть это, но оно возвращает только первое слово из списка, даже если это не такслово, которое он нашел.

некоторые советы, чтобы сделать эту работу будет принята с благодарностью.Спасибо,

text = 'this is a test'
words =['image', 'is']

if any(k in text for k in words):
      for k in words:
        print (k)
        print ("word found")
        break
else:
    print ("nope")

Ответы [ 7 ]

0 голосов
/ 12 февраля 2019

Попробуйте:

text = 'this is a test'
words =['image', 'is']

found = False
found_words = []

for k in words:
    if k in text:
        found_words.append(k)
        found = True

if found:
    print("words found:", found_words)
else:
    print("nope")

Напечатает:

words found: ['is']
0 голосов
/ 12 февраля 2019

Попробуйте это.

for i in words:
    if i in text:
        print(i)
0 голосов
/ 12 февраля 2019

Попробуйте это:

text = 'this is a test'
words =['image', 'is']

for k in [w for w in words if w in text]: 
    print (k) 
    print ("word found")
0 голосов
/ 12 февраля 2019

Если вы хотите найти общие элементы, я бы предложил использовать set:

text = 'this is a test'
words = ['image', 'is']

print(set(words).intersection(text.split()))
# {'is'}
0 голосов
/ 12 февраля 2019

Может быть, перестроить вот так

text = 'this is a test'
words =['image', 'is']

words_found = [word for word in words if word in text]
if len(words_found)>0:
    print(words_found)
else:
    print("nope")

    ```
0 голосов
/ 12 февраля 2019

Вам просто нужно сделать это (один вариант среди многих):

print(", ".join(k for k in words if k in text))
0 голосов
/ 12 февраля 2019

Обратите внимание, что в цикле for k in words вы просто печатаете все слова, не проверяя, действительно ли они содержатся в text.Вам также нужно split элементы text, чтобы проверить, содержит ли результирующий список k.Вы хотите сделать что-то вроде:

for k in words:
    if k in text.split():
        print (k)
        print ("word found")

Выход

is
word found

То же самое относится к начальному условию, если вы хотите сначала проверить, еслилюбые слова содержатся в text, вам нужно разделить слова:

any(k in text.split() for k in words)

Однако обратите внимание, что, как пишет @Austin, наиболее подходящий инструмент для того, что вы пытаетесьэто sets.Вы можете легко вычислить общие элементы на обоих наборах, вычислив пересечение следующим образом:

set(text.split()) & set(words)
# {'is'}

Узнайте больше о теме в множествах - Неупорядоченные коллекции уникальных элементов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...