Python,对列表列表中的字符串进行编码

Python,对列表列表中的字符串进行编码,python,list,encode,Python,List,Encode,我正在使用Python2.7 我有一个列表,如: testList2 = [[u'462', u'San Germ\xe1n, PR'],[u'461', u'40341']] encodedList = [['462', 'San Germ\xc3\xa1n, PR'],['461', '40341']] 我想对列表列表中的字符串进行编码,如: testList2 = [[u'462', u'San Germ\xe1n, PR'],[u'461', u'40341']] encodedL

我正在使用Python2.7

我有一个列表,如:

testList2 = [[u'462', u'San Germ\xe1n, PR'],[u'461', u'40341']]
encodedList = [['462', 'San Germ\xc3\xa1n, PR'],['461', '40341']]
我想对列表列表中的字符串进行编码,如:

testList2 = [[u'462', u'San Germ\xe1n, PR'],[u'461', u'40341']]
encodedList = [['462', 'San Germ\xc3\xa1n, PR'],['461', '40341']]
尝试编写函数来执行此操作(不起作用):

我认为,为了让函数工作,它需要将每个编码列表附加到先前的编码列表中,以生成列表的编码列表。不知道怎么做。如果有人能解释如何编辑函数来实现这一点,那就太棒了

我尝试了以下方法,但也不起作用

def testEncode(a):
  b = []
  for list in a:
    b.append([x.encode('utf-8') for x in list])
    return b

意识到您的第一个代码实际上不是一个印刷错误,而是一个逻辑错误,让我在这里总结一下我的评论。在您的方法中有两个问题(都是相关的):

第一个代码的问题:您当前只返回第一个子列表,因为您将返回放入for循环中。您的输入列表包含子列表,因此您需要以嵌套方式循环它们。一种方法是像你在第二种方法中所做的那样去做。另一种方法是使用列表理解。以下是列表理解方式,
i
将遍历子列表,
x
将遍历子列表
i
的元素

def testEncode(a):
    return [[x.encode('utf-8') for x in i] for i in a]
第二个代码的问题:在您的这次尝试中,基本上解决了忽略子列表的问题,但是您忘记将
return
语句放在for循环之外。因此,在嵌套for循环遍历所有子列表之前,您会过早地返回结果。因此,您只能看到第一个子列表被修改

def testEncode(a):
    b = []
    for list in a:
        b.append([x.encode('utf-8') for x in list])
    return b # <-- Moved outside the for loop now
def测试代码(a):
b=[]
对于a中的列表:
b、 追加([x.encode('utf-8')表示列表中的x])

return b#谢谢,谢谢你的解释。列表理解感觉更简洁,这对我来说是一种更好的方式