Как разделить список на список списков по определенному символу в элементах? - PullRequest
2 голосов
/ 04 августа 2011

Я относительно новичок в программировании и пытаюсь получить (очень) длинный список информации в таблицу, используя Python.Я установил HTML.py из Decalage , и теперь мне нужно превратить мой список в список списков, которые HTML.py может анализировать.

Существует ли простой способ разделения списка, напримерэто:

['(617) 965-2555<br />\nOrganization Name', 'Street Name', 'City', 'Zip code', '(413) 333-2251<br />\nOrg Name 2', 'Address', 'City', 'Zip code 2', '(617) 568-7777</p>\n\n']

в список списков в "\ n"?

Так что в идеале результат должен выглядеть примерно так:

[ ['Previous info', '(617) 965-2555<br />'] ['Organization name', 'Street name', 'City', 'Zip Code', '(413) 333-2251<br />'] ['Org Name 2', 'Address', 'City', 'Zip Code 2', '(617) 568-7777</p>'] ]

Предложения по альтернативному способу переноса этого списка в упорядоченную таблицу в виде HTML.py также будут полезны.

Ответы [ 2 ]

3 голосов
/ 04 августа 2011
>>> a
['(617) 965-2555<br />\nOrganization Name', 'Street Name', 'City', 'Zip code', '(413) 333-2251<br />\nOrg Name 2', 'Address', 'City', 'Zip code 2', '(617) 568-7777</p>\n\n']
>>> [i.split("\n") for i in a]
[['(617) 965-2555<br />', 'Organization Name'], ['Street Name'], ['City'], ['Zip code'], ['(413) 333-2251<br />', 'Org Name 2'], ['Address'], ['City'], ['Zip code 2'], ['(617) 568-7777</p>', '', '']]

Если вы хотите, чтобы он был сплющен:

>>> import itertools
>>> list(itertools.chain(*[i.split("\n") for i in a]))
['(617) 965-2555<br />', 'Organization Name', 'Street Name', 'City', 'Zip code', '(413) 333-2251<br />', 'Org Name 2', 'Address', 'City', 'Zip code 2', '(617) 568-7777</p>', '', '']

Редактировать:

Благодаря комментарию @ agf, теперь я получил его, я думаю:

>>> a
['(617) 965-2555<br />\nOrganization Name', 'Street Name', 'City', 'Zip code', '(413) 333-2251<br />\nOrg Name 2', 'Address', 'City', 'Zip code 2', '(617) 568-7777</p>\n\n']
>>> [i.split("{}") for i in "{}".join(a).split("\n")]
[['(617) 965-2555<br />'], ['Organization Name', 'Street Name', 'City', 'Zip code', '(413) 333-2251<br />'], ['Org Name 2', 'Address', 'City', 'Zip code 2', '(617) 568-7777</p>'], [''], ['']]

Предполагая, что "{}" никогда не используется в вашем исходном списке, иначе замените его на что-то, чего нет в вашем списке, |, ;:; и т. Д.

И вы можете легко отфильтровать вывод для удаления списка, содержащегопросто пустые строки с:

filter("".join, result)
0 голосов
/ 04 августа 2011

Вы можете легко преобразовать свой список в \ n:

newlist = [a.split('\n') for a in oldlist]

Но ваш список результатов недостаточно близок к вашему списку источников, чтобы я мог понять ... откуда взялась "Предыдущая информация"?

...