0
我有動物名稱的列表:檢查一些元素缺失,有些則不是蟒蛇
aList = [animal_lionAnimal,
animal_elephantAnimal_1,
animal_elephantAnimal_2,
animal_elephantAnimal_3,
animal_pandaAnimal_1,
animal_pandaAnimal_2]
然後,我有一個文件,它也包含了這些動物的名字。我通過argumentparser讀取文件,然後使用正則表達式來查找這些動物(更具體地說是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所有動物那麼其確定
如果從ALIST所有動物都缺少那麼其還OK
如果從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
不知道如何解決第三個發言。
嗯。但是,如果它們都丟失/拼寫錯誤,那麼它不應該「崩潰」,因爲它是可以的。因爲所有的動物名字都在那裏,或者沒有。它不可能是一半,有一半不是。但是感覺像解決方案不可行,因爲我正在比較列表和文件? – gants
@gants如果'aRegex'和'aList'都是列表(根據你的問題,它們應該是),那麼這種方法將起作用。如果情況並非如此,請修改您的問題以澄清每個變量的含義 – wnnmaw