Кусок торта. Основа разбивается на символ |
; это даст вам список всех предметов. Затем разделите список на более мелкие с фиксированным размером; хорошо изученный вопрос с множеством ответов. Я выбрал { ссылка }, потому что он не использует никаких внешних библиотек и возвращает полезную базу для следующего шага:
print (zip(*[data.split('|')[i::3] for i in range(3)]))
Это возвращает тип zip
, как можно видеть с
for item in zip(*[data.split('|')[i::3] for i in range(3)]):
print (item)
, который довольно близок:
('1', 'Mirazur', 'Menton, France')
('2', 'Noma', 'Copenhagen, Denmark')
('3', 'Asador Etxebarri', 'Axpe, Spain')
etc.
(Если вам интересно, зачем нужен zip
, выведите результат [data.split('|')[i::3] for i in range(3)]
.)
Последний шаг - преобразовать каждый кортеж в собственный список.
Собрать его вместе:
import pprint
data = '1|Mirazur|Menton, France|2|Noma|Copenhagen, Denmark|3|Asador Etxebarri|Axpe, Spain|4|Gaggan|Bangkok, Thailand|5|Geranium|Copenhagen, Denmark|6|Central|Lima, Peru|7|Mugaritz|San Sebastián, Spain|8|Arpège|Paris, France|9|Disfrutar|Barcelona, Spain|10|Maido|Lima, Peru|11|Den|Tokyo, Japan'
data = [list(item) for item in zip(*[data.split('|')[i::3] for i in range(3)])]
pprint.pprint (data)
Результат (отличное отступление от pprint
):
[['1', 'Mirazur', 'Menton, France'],
['2', 'Noma', 'Copenhagen, Denmark'],
['3', 'Asador Etxebarri', 'Axpe, Spain'],
['4', 'Gaggan', 'Bangkok, Thailand'],
['5', 'Geranium', 'Copenhagen, Denmark'],
['6', 'Central', 'Lima, Peru'],
['7', 'Mugaritz', 'San Sebastián, Spain'],
['8', 'Arpège', 'Paris, France'],
['9', 'Disfrutar', 'Barcelona, Spain'],
['10', 'Maido', 'Lima, Peru'],
['11', 'Den', 'Tokyo, Japan']]