从列表和HTML标记中删除重复的元素

时间:2011-10-27 07:11:32

标签: python

我有这样的清单:

 [' name           = Badmash Gujjar\n',
 ' image          = \n',
 ' image          =\n',
 ' caption        =\n', 
 ' director       = Sameer Butt\n',
 ' producer       =\n',
 ' writer         = Nasir Adeeb\n',
 ' starring       = Saima<br>Shaan (actor)Shaan<br>',
 ' music          = Robin Ghosh\n',
 ' cinematography =\n',
 ' editing        =\n', 
 ' distributor    = \n',
 ' released       = Film date2001']

我想从列表中删除重复的元素。我尝试了以下代码,但没有找到任何运气。 list(set(l))

还有什么办法可以删除HTML标签吗?感谢

2 个答案:

答案 0 :(得分:1)

d = dict(map(str.strip, a.split('=', 1)) for a in l)

将创建以下字典(这可能是您想要的,因为字典没有重复的键):

{'caption': '',
 'cinematography': '',
 'director': 'Sameer Butt',
 'distributor': '',
 'editing': '',
 'image': '',
 'music': 'Robin Ghosh',
 'name': 'Badmash Gujjar',
 'producer': '',
 'released': 'Film date2001',
 'starring': 'Saima<br>Shaan (actor)Shaan<br>',
 'writer': 'Nasir Adeeb'}

如果您只想删除<br>代码,则可以使用此代码:

d = dict(map(lambda x: x.strip().replace('<br>', ''), a.split('=', 1)) for a in l)

如果您需要删除任何 HTML标记,则需要更复杂的正则表达式(或HTML解析器)。

答案 1 :(得分:0)

这是一个快速的单线,只是为了传达这个想法..当你用它来制作时,使脚本更具可读性..你的列表在哪里......

dict([tuple(map(lambda a:a.strip().replace('<br>',''),x.split("="))) for x in l])