Как я могу реорганизовать этот список? - PullRequest
0 голосов
/ 19 декабря 2018

Я жду от сервера, чтобы отправить мне список, который включает ip, сопровождаемый "," сопровождаемый портом, сопровождаемым ";"и затем есть еще один кортеж ... и еще один, и х кортежи ...

пример:

127.0.0.1,45403;127.0.0.1,47146;127.0.0.1,52888

Я хочу реорганизовать его, чтобы в каждом цикле х итерации

Ipx = 127.0.0.1 
Portx = 45403

В следующей итерации цикла

Ipx = 17.0.0.1
Portx = 47146

и т. Д. Для каждого кортежа (Ipx и Portx - разные переменные)

Я пробовал

ipx , portx = lista.split(";")
        print ipx
        print portx

но это не работает ...

Ответы [ 4 ]

0 голосов
/ 19 декабря 2018

Вы можете создать OrderedDict и сохранить все ips и порт в списке

from collections import OrderedDict
d=OrderedDict()

d.setdefault('ip',[])
d.setdefault('port',[])

inList = '127.0.0.1,45403;127.0.0.1,47146;127.0.0.1,52888'
for i in inList.split(';'):
    temp=i.split(',')
    d['ip'].append(temp[0])
    d['port'].append(temp[1])
print(d)

Вывод

OrderedDict([('ip', ['127.0.0.1', '127.0.0.1', '127.0.0.1']),
             ('port', ['45403', '47146', '52888'])])
0 голосов
/ 19 декабря 2018

Если ответом вашего сервера является строка, вы можете сделать это:

inList = '127.0.0.1,45403;127.0.0.1,47146;127.0.0.1,52888'
inList = [[elem for elem in item.split(',')] for item in inList.split(';')]

for ip, port in inList:
  print(ip)
  print(port)

Вывод:

127.0.0.1
45403
127.0.0.1
47146
127.0.0.1
52888
0 голосов
/ 19 декабря 2018

Хорошо, значит вы на полпути, что вам нужно:

ipx = lista.split(";")[0].split(“,”)[0]
portx = lista.split(";")[0].split(“,”)[1]
print ipx
print portx

Если вы хотите зарегистрировать более одного IP-адреса, я бы использовал словарь как:

Ip_port = dict()
For i in all-data:
      a = i.split(";")[0].split(“,”)[0]
     Ip_port[a] = i.split(";")[0].split(“,”)[1]

Представьте, что у вас есть все «листы» в списке питонов.

0 голосов
/ 19 декабря 2018

Вам нужно разделить на;и затем следующим образом:

lista = "127.0.0.1,45403;127.0.0.1,47146;127.0.0.1,52888"

for address in lista.split(";"):
    ipx, portx = address.split(',')
    print(f'IP: {ipx}, Port: {portx}')
...