2016-06-07 47 views
-1

我將我的代碼移植到python 3中,同時保持向後兼容性。Python 3像Python中的字符串轉換2

python 2和python 3中的str函數將字符串轉換爲非ascii字符的方式不同。例如:

的Python 2:

In [4]: str('Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Löve & D. Löve') 
Out[4]: 'Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. L\xc3\xb6ve & D. L\xc3\xb6ve' 

但是在Python 3:

In [1]: str('Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Löve & D. Löve') 
Out[1]: 'Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Löve & D. Löve' 

的Python 3 我怎樣才能在Python 2相同的表示?我正在將字符串寫入sqlite3表。

+0

如果你想要unicode,使用unicode。 '印刷u'Alnus viridis(Chaix)DC。 SSP。 sinuata(Regel)A.Löve&D.Löve''在Python 2中做了你想做的事。 –

回答

1

看來你想要的是一個Unicode字符串文字。在Python 3中,所有正常的字符串文字都是unicode字符串文字。在Python 2中,只有unicode值是unicode字符串。創建一個unicode字符串在Python 2文字是通過把一個u字面前完成:

u'Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Löve & D. Löve' 

這是相同的表示爲你的Python 3串。請注意,如果你的源文件是UTF-8編碼,則需要添加一個特殊的註釋中指出,在第一或第二線,如:

# -*- coding: utf-8 -*- 

有關它的更多信息,請參閱PEP 263this other question

+0

這也給了Python 2中的一個錯誤。我需要保持APIs與python 2/3兼容性的一致性。我寧願保持人類可讀的格式(即,獲取python3類型轉換)。 – goelakash

+0

對不起,我感到困惑。我認爲這現在回答你寫的問題? –

+0

@goelakash哦,等等,你是否試圖製作一個在Python 2和Python 3上都能正確運行的源文件?如果是這樣,請編輯你的問題說出來。 –