Вопрос-Ответ

How to check if a string is a substring of items in a list of strings

Как проверить, является ли строка подстрокой элементов в списке строк

Как мне выполнить поиск элементов, содержащих строку 'abc' в следующем списке?

xs = ['abc-123', 'def-456', 'ghi-789', 'abc-456']

Следующее проверяет, есть ли 'abc' в списке, но не обнаруживает 'abc-123' и 'abc-456':

if 'abc' in xs:
Переведено автоматически
Ответ 1

Для проверки наличия 'abc' в любой строке в списке:

xs = ['abc-123', 'def-456', 'ghi-789', 'abc-456']

if any("abc" in s for s in xs):
...

Чтобы получить все элементы, содержащие 'abc':

matching = [s for s in xs if "abc" in s]
Ответ 2

Просто добавлю это: если вам нужно сопоставить более чем с одной строкой, например, abc и def, вы можете объединить два понимания следующим образом:

matchers = ['abc','def']
matching = [s for s in my_list if any(xs in s for xs in matchers)]

Вывод:

['abc-123', 'def-456', 'abc-456']
Ответ 3

Используйте filter, чтобы получить все элементы, которые имеют 'abc':

>>> xs = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
>>> list(filter(lambda x: 'abc' in x, xs))
['abc-123', 'abc-456']

Также можно использовать понимание списка:

>>> [x for x in xs if 'abc' in x]
Ответ 4

Если вам просто нужно знать, есть ли 'abc' в одном из элементов, это самый короткий способ:

if 'abc' in str(my_list):

Примечание: предполагается, что 'abc' является буквенно-цифровым текстом. Не используйте его, если 'abc' может быть просто специальным символом (т.Е. []', ).

python string list