Python: печать списка без скобок и одинарных кавычек? - PullRequest
5 голосов
/ 22 апреля 2011

У меня есть полный список IP-адресов.Я хотел бы пройтись по списку и распечатать каждый IP-адрес.Когда я пытаюсь сделать это:

def printList(theList):
    for item in theList:
        print item

И вывод выглядит так:

['8.0.226.5']
['8.0.247.5']
['8.0.247.71']
['8.0.249.28']
['8.0.249.29']

Я перепробовал все, включая «print item [0]» в цикле.Что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 22 апреля 2011

Каждый элемент в списке сам по себе является одноэлементным списком. Вероятно, нет никаких причин для этого - если вы не можете назвать ни одного, перейдите и удалите их (используя 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.

0 голосов
/ 22 апреля 2011

Я думаю, theList - это не список IP-адресов, а список списков IP-адресов (каждый из которых содержит 1 элемент).

Другой причиной проблемы может быть то, что у вас есть класс IP с перезаписанным методом str , который печатает его таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...