Проверьте, существуют ли несколько строк в другой строке

Как я могу проверить, существует ли какая-либо из строк в массиве в другой строке?

Как:

a = ['a', 'b', 'c']
str = "a123"
if a in str:
  print "some of the strings found in str"
else:
  print "no strings found in str"

Тот код не работает, он должен только показать то, чего я хочу достигнуть.

334
задан NullUserException 2 August 2010 в 05:18
поделиться

4 ответа

Вы можете использовать any:

if any(x in str for x in a):

Аналогично, чтобы проверить, найдены ли все строки из списка, используйте all вместо any.

631
ответ дан 23 November 2019 в 00:41
поделиться
a = ['a', 'b', 'c']
str =  "a123"

a_match = [True for match in a if match in str]

if True in a_match:
  print "some of the strings found in str"
else:
  print "no strings found in str"
3
ответ дан 23 November 2019 в 00:41
поделиться

Вам нужно выполнить итерацию по элементам a.

a = ['a', 'b', 'c']
str = "a123"
found_a_string = False
for item in a:    
    if item in str:
        found_a_string = True

if found_a_string:
    print "found a match"
else:
    print "no match found"
8
ответ дан 23 November 2019 в 00:41
поделиться

Вы должны быть осторожны, если строки в a или str становятся длиннее. Прямое решение занимает O(S*(A^2)), где S - длина str, а A - сумма длин всех строк в a. Для более быстрого решения посмотрите на алгоритм Aho-Corasick для сопоставления строк, который работает за линейное время O(S+A).

41
ответ дан 23 November 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: