0

我有一个取自 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 的 u。如果我使用 x!="u",那么在该函数运行后,任何带有 au 的单词都会出错。

这似乎也是做事的艰难方式。

有任何想法吗?提前致谢。

4

2 回答 2

1

假设这tags确实是一个包含 (str, list) 的 2 元组的 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
于 2013-07-20T19:31:09.227 回答
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  
于 2014-04-11T21:36:22.023 回答