Использование модуля Python ipaddress для сортировки строк, начинающихся с IP-адресаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Использование модуля Python ipaddress для сортировки строк, начинающихся с IP-адреса

Сообщение Anonymous »

Я просматриваю старую статью, в которой показано, как сортировать строки IP-адресов, используя числовое значение вместо текста.
Приведенный пример:
#!/usr/bin/python
import ipaddress

with open('file.txt', 'r') as f:
ips = sorted(ipaddress.ip_address(line.strip()) for line in f)
print('\n'.join(map(str, ips)))

В моем случае IP-адреса являются первой частью списка строк iplist, а не считываются из файла строк.
172.16.0.186 be:b6:5a:34:ee:3a
172.16.0.19 5c:cf:7f:59:f6:fd
172.16.0.212 48:a2:e6:b0:6d:3f
172.16.0.222 80:6a:10:3:d8:19
172.16.0.223 34:85:18:5d:3f:78
172.16.0.229 34:19:4d:1c:53:a6
172.16.0.27 c0:4e:30:1e:5:70
172.16.0.28 84:f3:eb:4e:38:b5
172.16.0.29 7c:9e:bd:bc:cf:44
172.16.0.30 9c:76:13:b7:39:97

Я попытался изменить приведенный выше код, чтобы перебрать iplist и отрезать начало строки, содержащей только IP-адрес:
ips = sorted(ipaddress.ip_address(line[:16].strip()) for line in iplist)

Это приводит к ошибке «AttributeError: объект 'str' не имеет атрибута 'ip_address'»
Просмотр документации для ipaddress >, похоже, что ipaddress.ip_address() действительно принимает строку.
ipaddress.ip_address('192.168.0.1')
IPv4Address('192.168.0.1')


Подробнее здесь: https://stackoverflow.com/questions/793 ... ip-address
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»