2014-10-28 4 views
-1

У меня есть текстовый файл, содержащий 100 разделенных запятыми IP-адресов с пробелами между ними.Группировка ips из списка в python

Мне нужно взять их по 10 за раз и поместить их в другой блок кода. Так, для IP-адресов:

1.1.1.1, 2.2.2.2, 3.3.3.3, 4.4.4.4, ... 123.123.123.123, 124.124.124.124, 125.125.125.125

мне нужно:

codethings [1.1.1.1, 2.2.2.2, ... 10.10.10.10] code code code 
codethings [11.11.11.11, 12.12.12.12, ... 20.20.20.20] code code code 
codethings [21.21.21.21, 22.22.22.22, ... 30.30.30.30] code code code 

etc 

Я уверен, что я мог бы сделать это с RegEx, но я не могу помочь, но думаю, что есть более простые способы сделать Это.

Любая помощь оценивается. Спасибо!

+0

разделения строки на запятой, а затем использовать обычную нарезку, например, 'а = карту (str, диапазон (50)); print a [0:10] ' –

ответ

0

Split на запятой, полоса чрезмерными пробелы из каждого элемента:

txt = '''1.1.1.1, 2.2.2.2, 3.3.3.3, 4.4.4.4, 
    123.123.123.123, 124.124.124.124, 125.125.125.125''' 

ip_list = map(str.strip, txt.split(',')) 

Что касается пагинацией см ответы: Paging python lists in slices of 4 items ИЛИ Is this how you paginate, or is there a better algorithm?

Я хотел бы также посоветовать (просто чтобы быть уверенным), чтобы отфильтровать недействительные IP Адрес, телефоны, например, с помощью генератора и socket модуля:

from __future__ import print_function 
import sys 
import socket 

txt = '''1.1.1.1, 2.2.2.2, 3.3.3.3, 4.4.4.4, 
    123.123.123.123, 124.124.124, 555.125.125.125,''' 

def iter_ips(txt): 
    for address in txt.split(','): 
     address = address.strip() 
     try: 
      _ = socket.inet_aton(address) 
      yield address 
     except socket.error as err: 
      print("invalid IP:", repr(address), file=sys.stderr) 

print(list(iter_ips(txt))) 
+0

Можно ли использовать сам текстовый файл вместо того, чтобы помещать IP-адреса непосредственно в скрипт? (Я не могу попробовать в данный момент, но мне любопытно ...) Вместо 'txt = '' '1.1.1.1, 2.2.2.2, 3.3.3.3, 4.4.4.4, 123.123. 123,123, 124.124.124, 555.125.125.125, '' '' сделать '= открытый текстовый ("text.txt")' ?? – rmp5s

Смежные вопросы