2011-08-04 166 views
2

我对编程相对陌生,并试图使用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也将是有帮助的另一种方法。

回答

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

这不是他问的。他希望列出一个列表,其中每个换行符都划定一个新的子列表。 – agf

+0

如果您无法预测哪些字符将会/不会被使用,那么它们很聪明但很容易破损。 – agf

+0

@agf,谢谢,编辑答案。是的,这很容易出错,但我认为你可以将它改成'+%+'^ 23 +ç.ü',这对于某人来说几乎是不可能的。或者,你甚至可以生成随机的十个字符并使用它。 – utdemir

0

你当然可以很容易地转换在\ n您的列表:

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

但你结果列表不够接近你的来源清单,我理解......“以前的信息”是从哪里来的?

+0

哎呀,有人打我吧;-) –

+0

这也不会做他想做的事。它不会从每一行创建子列表。 – agf

相关问题