Python 3 类似于 Python 2 中的字符串转换



我正在将我的代码移植到 python 3 并保持向后兼容性。

python

2 和 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 或其他问题。

相关内容

  • 没有找到相关文章

最新更新