list comprehension对编码函数不起作用

时间:2014-03-08 11:48:04

标签: python list-comprehension encode

我需要遍历所有元素才能在Python列表中进行字符串编码转换。尝试使用列表推导但不起作用。

这是我的代码:

contain_list = [[u'\u6e2c\u8a66', 'b', 'c'], [u'\u5de5\u4f5c', 'b1', 'c1']]

[[x.encode('utf-8') for x in row] for row in contain_list]

但如果我尝试:

for row in contain_list:
    for index in range(0,3):
        row[index] = row[index].encode('utf-8')

我可以在utf-8中获得转换后的字符串。如何使用列表理解来完成工作?

2 个答案:

答案 0 :(得分:0)

实际上你得到了你想要的东西:

>>> contain_list = [[u'\u6e2c\u8a66', 'b', 'c'], [u'\u5de5\u4f5c', 'b1', 'c1']]
>>> r = [[x.encode('utf-8') for x in row] for row in contain_list]
>>> r[0][0]
'\xe6\xb8\xac\xe8\xa9\xa6'

这是我猜的一些中文的UTF-8表示。

答案 1 :(得分:0)

如果打印contain_list的每个元素,您可以看到它们已正确编码。 如果您看到content_list,则只会看到utf-8表示。

contain_list = [[u'\u6e2c\u8a66', 'b', 'c'], [u'\u5de5\u4f5c', 'b1', 'c1']]
contain_list = [[x.encode('utf-8') for x in row] for row in contain_list]

print contain_list

for each in contain_list:
    for e in each:
        print e

[['\xe6\xb8\xac\xe8\xa9\xa6', 'b', 'c'], ['\xe5\xb7\xa5\xe4\xbd\x9c', 'b1', 'c1']]

測試
b
c
工作
b1
c1