簡體   English   中英

Python將unicode字符串轉換並保存到列表

[英]Python convert and save unicode string to a list

我需要在列表中插入一系列名稱(例如'Alam \\ xc3 \\ xa9'),然后我必須將它們保存到SQLite數據庫中。

我知道我可以通過提示正確顯示這些名稱:

print eval(repr(NAME)).decode("utf-8")

但是我必須將它們插入列表中,所以我不能使用打印

不用打印的其他方法嗎?

這里有很多誤解。

您引用的字符串不是 Unicode。 它是一個字節字符串,以UTF-8編碼。

您可以通過解碼將其轉換為Unicode:

unicode_name = name.decode('utf-8')

當您將unicode_name的值打印到控制台時,您將看到以下兩種情況之一:

>>> unicode_name
u'Alam\xe9'
>>> print unicode_name
Alamé

在這里,您可以看到僅鍵入名稱並按Enter鍵即可顯示Unicode代碼點的表示形式。 這與鍵入print repr(unicode_name) 但是,執行print unicode_name打印實際的字符-即在幕后,將其編碼為終端的正確編碼,然后打印結果。

但這都是無關緊要的,因為Unicode字符串只能在內部表示。 要將其存儲在數據庫,文件或任何位置中后,就需要對其進行編碼。 最有可能選擇的編碼是UTF-8,這就是它原來的格式。

>>> name
'Alam\xc3\xa9'
>>> print name
Alamé

如您所見,使用名稱的原始未解碼版本, repr並再次print顯示代碼和字符。 因此,並不是將其轉換為Unicode實際上會使它“真正地”成為正確的字符。

那么,如果要將其存儲在數據庫中怎么辦? 沒有。 沒事 Sqlite接受UTF-8輸入,並將其數據以UTF-8格式存儲在磁盤上。 因此,絕對不需要轉換即可將name的原始值存儲在數據庫中。

您是否正在尋找這樣的東西?

[n.decode("utf-8") for n in ['Alam\xc3\xa9', 'Alam\xc3\xa9', 'Alam\xc3\xa9']]

暫無
暫無

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

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