我有一个从id3中获取的列表。来自.mp3的标签。当我打印列表时,它是字符串和带有unicode的元组的混合。
我从列表中直接打印出以下内容。
[('album', [u'Singles']), ('artist', [u'Led Zeppelin']), ('title', [u'Kashmir'])]
我想要这个:
专辑Singles,艺术家Led Zeppelin,头衔Kashmir
我试过使用以下内容:
nvar = filter(lambda x: x!="[u'" and x!="(" and x!=")" and x!="]", var)
打印:
[('album', [u'Singles']), ('artist', [u'Led Zeppelin']), ('title', [u'Kashmir'])]
我可以使用:
>>> nvar = filter(lambda x: x!="[" and x!="'" and x!="(" and x!=")" and x!="]", str(var))
>>> nvar
'album, uSingles, artist, uLed Zeppelin, title, uKashmir'
但是我从unicode那里留下了你。如果我使用x!=“u”,那么任何带有u的单词在该函数运行后都会出错。
此外,这似乎是艰难的做事方式。
有什么想法吗?提前致谢。
答案 0 :(得分:1)
假设tags
确实是一个包含2元组(str,list)的Python列表,那么:
tags = [('album', [u'Singles']), ('artist', [u'Led Zeppelin']), ('title', [u'Kashmir'])]
print ', '.join('{} {}'.format(el[0], el[1][0]) for el in tags)
# album Singles, artist Led Zeppelin, title Kashmir
答案 1 :(得分:0)
下面的内容应该有效。由于'u'位于'('和'''之间,因此不会影响'真实'数据。
def Plain(self, U_String) :
P_String = str(U_String)
m=re.search("^\(\u?\'(.*)\'\,\)$", P_String)
if (m) : #Typical unicode
P_String = m.group(1).decode("utf8")
return P_String