Общий случай
Как правило, split
имеет ключевое слово maxsplit
, где вы можете указать максимальное количество делений.Например,
>>> s = 'IP MAC Sony Interactive Entertainment'
>>> s.split(' ', maxsplit=2)
['IP', 'MAC', 'Sony Interactive Entertainment']
. Это разделит строку на количество раз, указанное вами в maxsplit
, а остаток будет приведен к одной строке.
Из комментария
Выход - список, содержащий одну строку;где каждая строка из команды arp
разделена новой строкой.
output = ['192.168.200.1\t90:ef:68:f8:8b:c2\tZyXEL Communications Corporation\n192.168.200.81\t60:45:cb:6c:5e:3e\t(Unknown)\n192.168.200.83\t0c:fe:45:4b:b8:98\tSony Interactive Entertainment Inc.\n192.168.200.83\t0c:fe:45:4b:b8:98\tSony Interactive Entertainment Inc. (DUP: 2)\n192.168.200.106\tac:84:c6:57:f7:19\t(Unknown)\n192.168.200.72\t50:dc:e7:67:bd:e0\t(Unknown)\n192.168.200.150\t5c:f9:38:d1:25:b5\tApple, Inc.\n192.168.200.150\t5c:f9:38:d1:25:b5\tApple, Inc. (DUP: 2)\n192.168.200.157\t5c:52:1e:59:2c:d1\t(Unknown)\n192.168.200.229\tf8:62:14:5a:9e:c7\t(Unknown)']
Разделить одну строку на list
, содержащую каждую строку из команды arp
в виде отдельной строки.
>>> item_list = output[0].split('\n')
>>> item_list
['192.168.200.1\t90:ef:68:f8:8b:c2\tZyXEL Communications Corporation',
'192.168.200.81\t60:45:cb:6c:5e:3e\t(Unknown)',
....]
Теперь каждая строка просто \t
разделена - поэтому нет необходимости в maxsplit
.Возьмите первый элемент, например:
>>> item_one = item_list[0]
>>> item_one.split('\t')
['192.168.200.1', '90:ef:68:f8:8b:c2', 'ZyXEL Communications Corporation']
Имея это в виду, вы можете выполнить итерацию по полному item_list
, чтобы создать список списков:
>>> output_list = list()
>>> for item in item_list:
... output.append(item.split('\t'))
...
>>> output_list
[['192.168.200.1', '90:ef:68:f8:8b:c2', 'ZyXEL Communications Corporation'],
['192.168.200.81', '60:45:cb:6c:5e:3e', '(Unknown)'],
....]]
Втиснут в одну линию
>>> [item.split('\t') for item in output[0].split('\n')]