Python,在列表列表中编码字符串

时间:2018-12-26 20:40:12

标签: python list encode

是使用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

1 个答案:

答案 0 :(得分:1)

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

第一个代码的问题:您当前仅返回第一个子列表,因为您将返回值放入了for循环中。您的输入列表包含子列表,因此您需要以嵌套方式遍历它们。一种方法是像在第二种方法中一样进行操作。另一种方法是使用列表推导。以下是列表理解方法,其中i将遍历子列表,而x将遍历子列表i的元素。

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

第二个代码的问题:在您的这种尝试中,您基本上已经解决了忽略子列表的问题,但却忘记了放置return语句 outside 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