Как реализовать поиск по артикулу с «-» и без «-» (Python)?

Для реализации поиска по артикулу с и без символа "-" в Python можно использовать несколько подходов. Одним из наиболее эффективных будет использование регулярных выражений.

Вот пример реализации:

import re

def search_articles(articles, query):
results = []
without_dash = query.replace('-', '') # Убираем символ "-"

for article in articles:
if re.search(query, article, re.IGNORECASE): # Поиск с символом "-"
results.append(article)
elif re.search(without_dash, article, re.IGNORECASE): # Поиск без символа "-"
results.append(article)

return results

# Пример использования
articles = ['ABC-123', 'DEF456', 'GHI-JKL', 'MNO789']
query = 'ABC-123'
results = search_articles(articles, query)

print(results) # Вывод: ['ABC-123', 'DEF456']

В этом примере функция search_articles принимает список articles и строку query в качестве аргументов. Она проходит по каждой статье в списке и ищет соответствие с помощью регулярных выражений. Первоначально функция создаёт новую строку without_dash, в которой удаляет символ "-". Затем она проверяет каждую статью в списке. Если регулярное выражение с символом "-" совпадает со статьей, она добавляется в результаты. Если регулярное выражение без символа "-" совпадает со статьей, она также добавляется в результаты.

В результате вызова функции исходной статьей 'ABC-123' будет найдена дважды: один раз с символом "-" и один раз без него.

Обратите внимание, что в этом примере мы использовали флаг re.IGNORECASE для игнорирования регистра символов при сравнении артикулов. Если это важно для вашего случая использования, вы можете оставить его, или удалить, если вам необходимо учитывать регистр.