如何将列表拆分为元素中特定字符的列表列表?

时间:2011-08-04 16:22:18

标签: python list split nested-lists

我对编程相对较新,并尝试使用Python将(非常)长的信息列表放入表中。我安装了HTML.py from 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 个答案:

答案 0 :(得分:3)

>>> 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)

答案 1 :(得分:0)

您当然可以在\ n:

上轻松转换您的列表
newlist = [a.split('\n') for a in oldlist]

但是您的结果列表与您的源列表不够接近,我无法理解......“以前的信息”来自哪里?