Я новичок в python, и я пытаюсь проверить, находится ли строка внутри списка.
У меня есть две переменные:
new_filename: 'SOLICITUDES2_20201206.DAT' (str type)
и
downloaded_files:
[['SOLICITUDES-20201207.TXT'], ['SOLICITUDES-20201015.TXT'], ['SOLICITUDES2_20201206.DAT']] (list type)
для проверки того, находится ли строка внутри списка, я использую следующее:
if new_filename in downloaded_files:
print(new_filename,'downloaded')
и я никогда не попасть внутрь если.
Но если я сделаю то же самое, но с жестко запрограммированным текстом, это сработает:
if ['SOLICITUDES2_20201206.DAT'] in downloaded_files_list:
print(new_filename,'downloaded')
Что я делаю не так?
Спасибо!
Ваш код спрашивает, находится ли строка в списке списков, состоящих из одной строки, поэтому он ничего не находит.
Ваш downloaded_files
— это список списков. Список может содержать что угодно внутри него, числа, список, словари, строки и т. д. Если вы пытаетесь определить, находится ли ваша строка в списке, оператор if
будет искать только идентичные совпадения, то есть строки.
Я предлагаю вам получить все строки в список вместо списка списков. Вы можете сделать это, используя понимание списка:
downloaded_files = [['SOLICITUDES-20201207.TXT'], ['SOLICITUDES-20201015.TXT'], ['SOLICITUDES2_20201206.DAT']]
downloaded_files_list = [file[0] for file in downloaded_files]
Тогда ваше утверждение if
должно работать:
new_filename = 'SOLICITUDES2_20201206.DAT'
if new_filename in downloaded_files_list:
print(new_filename,'downloaded')