使用unicode清理包含字符串和元组的各种列表

2024-09-28 21:19:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张id3的单子。来自.mp3的标签。当我打印列表时,它是字符串和元组与unicode的混合体。你知道吗

我从单子上直接打印出以下内容。你知道吗

[('album', [u'Singles']), ('artist', [u'Led Zeppelin']), ('title', [u'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”,则在该函数运行后,任何包含u的单词都将出错。你知道吗

而且这似乎是很难做到的事情。你知道吗

有什么想法吗?提前谢谢。你知道吗


Tags: andlambdaalbumledtitleartistvarunicode
2条回答

假设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

像下面这样的方法应该行得通。由于“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  

相关问题 更多 >