Есть файл, хочу проверить есть ли в файле например 'Имя' and 'Фамилия' in line, то-есть сузить поиск, питон 3 проверяет только последнее условие, как исправить?
Asked
Active
Viewed 1,365 times
0
Nick Volynkin
- 34,094
Bill Clinton
- 25
3 Answers
4
Рассмотрим менее привычные способы сделать то же самое.
strings = ['Имя', 'Фамилия']
line = 'Имя, Фамилия, Отчество'
Если у вас есть список значений, каждое из которых должно быть True, можно использовать all(). Выражение во внутренних скобках - это генератор. Он перебирает все строки в списке strings и для каждого вычисляет значение string in line. Полученные значения формируют новый список.
print (all(string in line for string in strings))
Можно добавить ещё функциональщины с помощью map. Этот код берёт каждый элемент из списка strings и проверяет, что line.__contains__(этот элемент) == True. Полученные значения аналогично формируют новый список.
print (all(map(line.__contains__, strings)))
Nick Volynkin
- 34,094
0
Как по мне, самое простое это взять выражение в скобки.
('Имя' and 'Фамилия') in line
grep -Ff words inputиспользовать, применяя аналог алгоритм Ахо-Корасика, который может быть заметно эффективней – jfs Nov 20 '16 at 22:36