2017-08-08 22 views
1

我有一個使用BeautifulSoup創建的列表。我試圖將列表項從一個NavigableString更改爲Unicode,但是當我試圖循環訪問列表時,它沒有任何影響,但是如果我在列表上調用unicode,它將變成unicode。如何將列表項變爲unicode而不會丟失列表的結構

如果我這樣做,它不會改變的項目轉換成Unicode:

for i in D: 
    unicode(i) 

如果我這樣做,似乎把整個名單成Unicode,我可以通過項目不再重複:

D = unicode(D) 

有沒有一種方法,我可以把列表項變成unicode,所以我可以做其他的事情,比如將它們轉換成字符串,運行.replace()等?

+3

您不會將結果分配給任何東西......您可以使用列表理解創建新列表,例如, 'D = [unicode(i)for i in D]' – AChampion

回答

0

在你的第一個例子中,你不會將unicode強制轉換分配給任何變量。這就是爲什麼原始清單保持不變。

您的第二個示例不起作用,因爲您必須將unicode應用於每個列表項目,而不是列表本身。

使用列表理解從舊創建一個新的列表,處理每個項目與unicode

D = [unicode(item) for item in D] 

或者,你可以使用D = map(unicode, D)。請注意,此語法僅適用於Python 2.x,這是您似乎正在使用的。

+0

完美。謝謝! – user3294779

+0

@ user3294779沒問題!另外作爲一個友好的提醒,我想鼓勵你接受Python 3.x. 2020年不要落後! :) – JoshuaRLi

0
for count,i in enumerate(D): 
    D[count]=unicode(i) 

您需要將其分配給索引。

相關問題