Я хотел бы проверить, есть ли в каждом элементе массива в Python два слова: «автомобиль» и «мотоцикл». Я знаю, как проверить одно слово с in
, но не знаю, как это сделать с двумя словами. Действительно признателен за любую помощьPython - Проверьте, находятся ли два слова в строке
ответ
Два решения слова:
for string in array:
if 'car' in string and 'motorbike' in string.split():
print("Car and motorbike are in string")
раствор н-слово, чтобы проверить, если все слова test_words
в string
:
test_words = ['car', 'motorbike']
contains_all = True
for string in array:
for test_word in test_words:
if test_word not in string.split()::
contains_all = False
break
if not contains_all:
break
if contains_all:
print("All words in each string")
else:
print("Not all words in each string")
' all (карта (la mbda w: w в тексте, («автомобиль», «мотоцикл»))) 'намного чище ... – ldavid
Ну, в некотором смысле вы правы. Однако это зависит от того, что вы подразумеваете под чистотой. Когда вы просматриваете каждую строку моего кода, очень очевидно, что происходит, тогда как в вашей строке я могу понять, что происходит, и вы тоже, но новичок может не понимать этого. Мой ответ был написан таким образом, что новичок должен понимать, что происходит, а не как oneliner для копирования. Тем не менее, в том смысле, что ваше решение занимает меньше места для одного и того же и может быть даже быстрее, вы правы! –
Используйте Подсобная логическое.
car=False
motorbike=False
for elem in array:
if "car" in elem:
car=True
if "motorbike" in elem:
motorbike=True
if car and motorbike:
break
EDIT: Я просто прочитал «в каждом элементе». Просто используйте AND.
использовать 'print' для указания наличия совпадения или нет – user2728397
Я думаю, что простое решение заключается в следующем:
all(map(lambda w: w in text, ('car', 'motorbike')))
Но может быть проблема с этим, в зависимости от того, насколько требователен вам нужно сравнение, чтобы быть:
>>> text = 'Can we buy motorbikes in carshops?'
>>> all(map(lambda w: w in text, ('car', 'motorbike')))
True
Слова «автомобиль 'и' motorbike 'НЕ находятся в text
, и это все еще говорит True
. Вам может потребоваться полное совпадение слов. Я бы сделал это:
>>> words = ('car', 'motorbike')
>>> text = 'Can we buy motorbikes in carshops?'
>>> set(words).issubset(text.split())
False
>>> text = 'a car and a motorbike'
>>> set(words).issubset(text.split())
True
И теперь это работает!
Нет необходимости в преобразовании' set' в параметре 'issubset', метод принимает итерабельность:' set (words) .issubset (text.split()) ' –
Я хотел бы использовать all
функции:
wanted_values = ("car", "motorbike")
all(vehicle in text for text in wanted_values)
Так что, если у нас есть список строк:
l = ['some car and motorbike',
'a motorbike by a car',
'the car was followed by a motorbike']
lines_with_vehicles = [text for text in l
if all(vehicle in text for text in wanted_values)]
С регулярными выражениями вы могли бы сделать:
# no particular order
car_and_motorbike_pattern = re.compile(r'(car.*motorbike|motorbike.*car)')
all(car_and_motorbike_pattern.search(text) for text in list_of_expressions)
# This works too
car_or_motorbike_pattern = re.compile(r'(car|motorbike)')
get_vehicles = car_or_motorbike_pattern.findall
all(len(set(get_vehicles(text))) == 2 for text in list_of_expressions)
- 1. Проверьте, находятся ли два элемента в наборе в элементе списка
- 2. Проверьте, находятся ли два элемента в списке в определенном порядке?
- 3. Cakephp проверьте, находятся ли два значения в массиве
- 4. Проверьте, находятся ли два файла на одном томе в bash
- 5. Учитывая два слова, найдите, находятся ли они в одном синфаксе
- 6. Подсчитайте два слова в строке
- 7. Проверьте, нет ли слова в DB (PHP)
- 8. python regex два слова
- 9. Проверьте, нет ли какого-либо слова в строке в массиве
- 10. Проверьте, все ли элементы находятся в другом списке в Python
- 11. Проверьте, содержит ли список все слова в строке
- 12. Python регулярное выражение найти два ключевых слова в строке
- 13. Как перевернуть два слова в строке, Java
- 14. Regex матч два слова в строке
- 15. Проверьте, находятся ли объекты в пути
- 16. Проверьте, находятся ли координаты в области
- 17. Проверьте, находятся ли JButtons в определенном JPanel
- 18. Python - Найти слова в строке
- 19. PHP проверить, есть ли два слова в строке
- 20. PHP: Проверьте, не совпадают ли два случайных слова.
- 21. Regex чтобы соответствовать два слова в строке
- 22. получить следующие два слова в строке
- 23. swap два слова в строке php
- 24. Два слова в одной строке с пробелом
- 25. Проверьте, есть ли ключевое слово в строке
- 26. Регулярные выражения в Notepad ++ два слова в одной строке
- 27. Проверьте, находятся ли координаты внутри полигона KML
- 28. Python - проверка, все ли слова в строке в массиве
- 29. Python ищет два слова regex
- 30. Проверьте, совпадают ли два элемента в списке?
Используйте логическое И оператор: 'if cond1 и cond2:' – Li357
Просто используйте оператор 'and' –