У меня есть список имен животных:Проверьте некоторые элементы отсутствуют, а некоторые из них не питон
aList = [animal_lionAnimal,
animal_elephantAnimal_1,
animal_elephantAnimal_2,
animal_elephantAnimal_3,
animal_pandaAnimal_1,
animal_pandaAnimal_2]
Тогда у меня есть файл, который также содержит эти названия животных. Я читаю файл аргументом, а затем использую регулярное выражение для поиска этих животных (точнее, re.finall).
for aFile in args.filePath:
contents = open(aFile).read()
# An example of what the regex tries find in the file: (*animal_elephantAnimal_1()) = 0.0; # some comments
aRegex = re.findall(r'(?:.\s+\(\*)(animal\w+)(?:.[^;]*)', contents)
То, что я хочу сделать, это «проверка», чтобы увидеть, если животные из ALIST находятся в файле. Вот несколько сценариев:
Если все животные из ALIST найдены, то его OK
Если все животные из ALIST отсутствуют, то его еще хорошо
Если некоторые животные из ALIST отсутствуют а некоторые нет (например, лев существует, но не панда и слон), тогда его НЕ ОК и должен дать
sys.exit
или что-то еще.
Вот мои высказывания до сих пор:
#Remove matching animals
listHaveElement = list(set(aList) - set(aRegex))
if not listHaveElement: #if list is []
print "There are no animals name missing ", listHaveElement
else: #if there are animals missing
print sys.exit("There are animals missing and they are: {0}".format(listHaveElement))
Некоторые примеры:
animal_lionAnimalAsdf, -> Missing due to wrong name
animal_elephantAnimal_1, -> not missing
animal_elephantAnimal_2, -> not missing
animal_elephantAnimal_3, -> not missing
animal_pandaAnimal_1Mooo, -> missing due to wrong name
animal_pandaAnimal_2 -> not missing
Не знаю, как решить 3-е заявление.
Хм. Но если все они отсутствуют/написаны неправильно в файле, то он не должен «сбой», поскольку он в порядке. Потому что либо все имена животных есть, либо ни один из них. Не может быть половины, а половина - нет. Но похоже, что это решение не выполнимо, так как я сравниваю список с файлом? – gants
@gants Если оба 'aRegex' и' aList' являются списками (на основе вашего вопроса они должны быть), то этот подход будет работать. Если это не так, попробуйте пересмотреть свой вопрос, чтобы уточнить, что каждая переменная – wnnmaw