[英]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.