Каждый элемент в списке сам по себе является одноэлементным списком. Вероятно, нет никаких причин для этого - если вы не можете назвать ни одного, перейдите и удалите их (используя re.find
сверх re.findall
или возвращая один элемент из списка, возвращенного re.findall
), они просто избыточны и вызвать проблемы, как в этом случае.
Независимо от того, print item[0]
должен работать, так как он печатает единственный элемент в списке, и в отличие от str()
списков, он не будет сначала запускать элемент через repr
(что приводит к кавычкам и приводит к выходу из печати символы, если они есть в строке). И как только вы избавитесь от избыточных одноэлементных списков, print '\n'.join(items)
также будет работать.
Ваш код выдает ошибку, если в theList
есть пустой список. Если в recentFile
есть строка, которая не содержит ничего, отформатированного как IP, returnIP
будет возвращен пустой список, и если в comparisonFile
будет любая строка (кстати: вы открываете ее с описательным именем в начале, но открывайте его снова и снова без описательного имени в chechMatch
), также не содержит IP-адреса, вы получите другой пустой список, который, конечно, равен пустому списку, переданному в качестве параметра ip
. Так что для не-IP-имен в recentFile
будут добавлены пустые списки. Этого целого беспокойства можно избежать, если вы возвращаете строки вместо одноэлементных списков из returnIP
, используете None
, когда в текущей строке нет IP, и пропускаете проверку / добавление в compareFiles
, если returnIP
возвращает None
.