У меня проблема false negative во время цикла в python.Найти точный элемент списка в строке
Вот мой список:
l = ['modello', 'modello1', 'modello_old', 'new_modello']
и это строка:
db = '/home/user/modello1.sqlite'
То, что я хочу сделать, это фильтровать db
строку и для вывода элемента из списка, который появляется в строка.
Таким образом, результат должен быть толькоmodello1
.
Это мой цикл:
for i in l:
if i in db:
print i
но результат не то, что я хотел бы получить:
modello
modello1
как я могу соответствовать точному слову?
EDIT: проблема может быть, что db
является OS зависимой так /
может быть преобразована в \
.
EDIT2: с @ Карой-Horvath решение:
преобразовать дб в списке:
db = [os.path.basename(db).replace('.sqlite', '')]
петлевой элемент db
во всем списке:
for i in db:
if i in l:
print i
использовать регулярное выражение –
Единственным способом я вижу, что это будет возможно, если вы разделяете точную строку, которую вы хотите для совпадения с первым. Поэтому разделите 'db' на' modello1', но вы считаете нужным, а затем сопоставляете его. – Noxeus
Ну, проблема в том, что 'modello' * does * появляется в' db'; вы должны указать правила для сопоставления элемента 'l' в' db'. –