python манипулирование списком для сравнения части элемента, а не полного элемента - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть два списка, и я хочу обработать только те элементы, часть которых не совпадает.

ListA = ['CAT.txt', 'CAT.txt.ext', 'DOG.txt', 'DOG.txt.ext', 'TIGER.txt.ext', TIGER.txt '] ListB = ['CAT_NEW.txt', 'CAT_NEW.txt.ext', 'TIGER_NEW.txt', 'TIGER_NEW.txt.ext']

Список B является подмножеством списка A с "_NEW"

Вывод, который я хочу: Список C = ['DOG.txt', 'DOG.txt.ext']

Это обходной путь для другого вопроса, который я задал: Python: Попытка проверить, существует ли файл и, если нет, создать новые файлы и окончательный список вывода . Проверил несколько потоков, но .txt.ext трудно разделить на ...

Я понял, что если я разделю списки ввода, я могу реализовать это без проверки файла журнала.

Я проверил это: Python: как найти элемент в списке, который соответствует части имени элемента

1 Ответ

1 голос
/ 29 апреля 2020

Удалите строки '_NEW' из ListB и используйте операцию set:

In [1]: ListA = ['CAT.txt','CAT.txt.ext','DOG.txt','DOG.txt.ext','TIGER.txt.ext','TIGER.txt']                                 

In [2]: ListB = ['CAT_NEW.txt','CAT_NEW.txt.ext', 'TIGER_NEW.txt', 'TIGER_NEW.txt.ext']                                       

In [3]: lb= [ s.replace("_NEW","") for s in ListB ]                                                                           

In [4]: lb                                                                                                                    
Out[4]: ['CAT.txt', 'CAT.txt.ext', 'TIGER.txt', 'TIGER.txt.ext']

In [5]: list(set(ListA)-set(lb))                                                                                              
Out[5]: ['DOG.txt', 'DOG.txt.ext']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...