我正在将我的代码移植到 python 3 并保持向后兼容性。
python2 和 python 3 中的 str
函数以不同的方式转换具有非 ASCII 字符的字符串。例如:
蟒蛇 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. Lxc3xb6ve & D. Lxc3xb6ve'
但在 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'
蟒蛇 3如何在 Python 2 中获得相同的表示形式?我正在将字符串写入 sqlite3 表。
看起来你想要的是一个 unicode 字符串文字。在 Python 3 中,所有普通字符串文字都是 unicode 字符串文字。在 Python 2 中,只有unicode
值是 unicode 字符串。在 Python 2 中创建 unicode 字符串文字是通过在文字前面放置一个u
来完成的:
u'Alnus viridis (Chaix) DC. ssp. sinuata (Regel) A. Löve & D. Löve'
这与 Python 3 字符串的表示形式相同。请注意,如果您的源文件采用 UTF-8 编码,则需要在第一行或第二行添加特殊注释以指示这一点,例如:
# -*- coding: utf-8 -*-
有关此内容的详细信息,请参阅 PEP 263 或其他问题。