在python中将unicode转换为两个单独的列表

在python中将unicode转换为两个单独的列表,python,list,Python,List,我有这个unicode字符串 u"[(2102, 'a'), (1882, 'b'), (1304, 'c'), (577, 'd'), (470, 'e')]" <type 'unicode'> u“[(2102,'a'),(1882,'b'),(1304,'c'),(577,'d'),(470,'e')” 如何将其转换为两个单独的列表您可以使用两个列表理解: ex = [(2102, 'a'), (1882, 'b'), (1304, 'c'), (577, 'd'), (

我有这个unicode字符串

u"[(2102, 'a'), (1882, 'b'), (1304, 'c'), (577, 'd'), (470, 'e')]"

<type 'unicode'>
u“[(2102,'a'),(1882,'b'),(1304,'c'),(577,'d'),(470,'e')”

如何将其转换为两个单独的列表

您可以使用两个列表理解:

ex = [(2102, 'a'), (1882, 'b'), (1304, 'c'), (577, 'd'), (470, 'e')]
list1 = [x[0] for x in ex]
list2 = [x[1] for x in ex]

你展示的是一个列表,但你说你有一个字符串。因此,假设您确实有一个字符串,您可以使用
eval()
将其转换为一个列表,然后执行一个操作,将值转换为两个元组(可以很容易地转换为列表):

s=u“[(2102,'a'),(1882,'b'),(1304,'c'),(577,'d'),(470,'e')”
类型
#
l1,l2=zip(*(评估)
打印(l1)
#(2102, 1882, 1304, 577, 470)
打印(l2)
#(‘a’、‘b’、‘c’、‘d’、‘e’)
您也可以尝试

unicode_list =[(2102, 'a'), (1882, 'b'), (1304, 'c'), (577, 'd'), (470, 'e')]
map(list,zip(*unicode_list))

其中zip()和*运算符可用于解压列表。

令人困惑,因为您显示了一个列表,然后说`。您不能使用完整示例请指定python版本?这是我在打印第一个列表时得到的输出。,[u'[',u'(',u'2',u'1',u'0',u'2',u',',u'',u'',u'',u'',u'a'…..如果您运行我提供的上面的示例,它应该按照您的要求返回两个列表,但您似乎发现上面的示例输入不正确,应该显示为
u”[(2102,'a'),(1882,'b'),(1304,'c'),(577,'d'),(470,'e')”
正如下面@pault的回答,因此这个答案将是做你想做的事情的正确方式。
unicode_list =[(2102, 'a'), (1882, 'b'), (1304, 'c'), (577, 'd'), (470, 'e')]
map(list,zip(*unicode_list))