我需要遍历所有元素才能在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中获得转换后的字符串。如何使用列表理解来完成工作?
答案 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