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

Python, encode strings within a list of lists

正在使用 Python 2.7.

我有一个列表列表,例如:

testList2 = [[u'462', u'San Germ\xe1n, PR'],[u'461', u'40341']]

我想对列表列表中的字符串进行编码,例如:

encodedList = [['462', 'San Germ\xc3\xa1n, PR'],['461', '40341']]

试图编写一个函数来执行此操作(没有成功):

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

我认为要使该函数起作用,它需要将每个编码列表附加到先前的编码列表以生成列表的编码列表。不知道该怎么做。如果有人可以解释如何编辑函数来执行此操作,那就太棒了。

我尝试了以下方法也没有用

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

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

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

def testEncode(a):
    return [[x.encode('utf-8') for x in i] for i in a]

第二个代码的问题: 你的这个尝试,基本解决了忽略子列表的问题但是你忘记了将您的 return 语句 放在 循环之外。因此,在您的嵌套 for 循环遍历所有子列表之前,您过早地 return 结果。因此,您只会看到第一个子列表已修改。

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