簡體   English   中英

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

在意識到您的第一個代碼實際上不是印刷錯誤而是邏輯錯誤之后,讓我在這里總結一下我的評論。 您的方法有兩個問題(都相關):

第一個代碼的問題 :因為您將返回值放在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM