#python
#python
Вопрос:
Я ищу определенную строку в списке; эта строка является частью более длинной строки.
В основном я перебираю текстовый файл и добавляю каждую строку в другой элемент списка. Теперь моя цель — просмотреть весь список, чтобы выяснить, содержит ли какой-либо из элементов string определенную строку.
пример исходного файла:
asfasdasdasd
asdasdasdasdasd mystring asdasdasdasd
asdasdasdasdasdasdadasdasdasdas
Теперь представьте, что каждая из 3 строк находится в элементе списка; и вы хотите знать, есть ли в списке строка «моя строка» в любом из его элементов (мне не нужно знать, где она находится или сколько вхождений строки в списке). Я попытался получить его с помощью этого, но, похоже, он не нашел ни одного вхождения
work_list=["asfasdasdasd", "asdasdasdasd my string asdasdasdasd", "asdadadasdasdasdas"]
has_string=False
for item in work_list:
if "mystring" in work_list:
has_string=True
print "***Has string TRUE*****"
print " n".join(work_list)
Результатом будет просто список, а bool has_string остается False
Я что-то упускаю или неправильно использую оператор in ?
Комментарии:
1. условие должно быть, если «mystring» в item
Ответ №1:
Вы хотите, чтобы это было:
if "mystring" in item:
Ответ №2:
Краткий (и обычно более быстрый) способ сделать это:
if any("my string" in item for item in work_list):
has_string = True
print "found mystring"
Но на самом деле то, что вы сделали, это реализовать grep
.
Ответ №3:
Способ 1
[s for s in stringList if ("my string" in s)]
# --> ["blah my string blah", "my string", ...]
Это даст список всех строк, содержащих «мою строку».
Способ 2
Если вы просто хотите проверить, существует ли он где-нибудь, вы можете быть быстрее, выполнив:
any(("my string" in s) for s in stringList)
# --> True|False
Это позволяет завершить поиск при первом появлении "my string"
.
Метод 3
Вы захотите поместить это в функцию, предпочтительно в отложенный генератор:
def search(stringList, query):
for s in stringList:
if query in s:
yield s
list( search(["an apple", "a banana", "a cat"], "a ") )
# --> ["a banana", "a cat"]