Разделение файла на список, а затем на отдельные части — Python

#python

#python

Вопрос:

В настоящее время я пытаюсь разделить файл на список IP-адресов, как бы мне заставить его работать до конца файла, а затем остановиться, когда он достигнет конца. В настоящее время он считывает первые строки, разбивает их и останавливается.

 with open('log1.txt') as logFile: 
  for line in logFile:
    i = i 1
    content_list = line.split("-")
    #ipList[i] = content_list[1] # I want it to be split into this list
    break
print(content_list[1])
 

Вот также пример того, как выглядит мой список

 172.16.121.64 - - [03/Sep/2018:09:46:19] GET /index.html HTTP/1.1 200 437
172.16.121.64 - - [03/Sep/2018:09:46:23] GET /index.html HTTP/1.1 200 437
172.16.121.64 - - [03/Sep/2018:09:46:27] GET /index.html HTTP/1.1 200 437
172.16.121.35 - - [03/Sep/2018:09:46:28] GET /index.html HTTP/1.1 200 437
172.16.121.240 - - [03/Sep/2018:09:46:31] GET /index.html HTTP/1.1 200 437
 

Комментарии:

1. Почему этот оператор break? это причина, по которой вы не можете добраться до конца файла, поскольку он завершает цикл for

Ответ №1:

вы можете разделить строку пробелом и взять элемент с индексом 0. Вы можете делать все, что угодно, в понимании списка

 with open('log1.txt') as logFile: 
    ips = [line.split()[0] for line in logFile]
print(ips)
 

Если вы планируете и дальше манипулировать IP-адресами, посмотрите на ipaddress из стандартной библиотеки.

Комментарии:

1. Мне просто нужно отсортировать их и найти наиболее часто встречающийся сейчас

2. Посмотрите на коллекции. Counter() и его метод most_comm() .