如何在Python中使用Unicode

如何在Python中使用Unicode

如何在Python中使用Unicode

  Unicode 是世界上大多数计算机的标准字符编码,它确保文本(包括字母、符号、表情符号,甚至控制字符)在不同设备、平台和数字文档中显示相同,无论使用何种操作系统或软件。

如何在Python中使用Unicode
如何在Python中使用Unicode

  Unicode 本身不是编码,而更像是一个包含地球上几乎所有可能字符的数据库。Unicode 包含一个代码点,它是数据库中每个字符的标识符,其值范围为 0 到 110 万,这意味着它不太可能很快用完这些唯一的代码点。Unicode 中的每个代码点都表示为U+n,其中U+表示它是一个 Unicode 代码点并且n是字符的四到六个十六进制数字的集合。它是一种比仅代表 128 个字符的 ASCII 更强大的编码系统。使用 ASCII 在世界范围内交换数字文本很困难。

  在 Python 中使用 Unicode 可能会造成混淆并导致错误。本教程将提供有关如何在Python中使用Unicode的基础知识。

  推荐:Python Global Keyword全局关键字

怎么使用Python 交互式控制台

  1、在Python中转换Unicode代码

  UTF-8 是任何使用国际化数据的人的必备工具。一般来说,UTF-8 是大多数用途的不错选择。它相对高效与多种软件一起使用。UTF-8 采用 Unicode 代码点并将其转换为计算机可以理解的十六进制字节。换句话说,Unicode 就是映射,而 UTF-8 使计算机能够理解该映射。

在Python中转换Unicode代码
如何在Python中使用Unicode

  在 Python 3 中,默认的字符串编码是 UTF-8,这意味着 Python 字符串中的任何 Unicode 代码点都会自动转换成相应的字符。在此步骤中,您将使用 Python 中的 Unicode 代码点创建版权符号 (©)。

s =  '\u00A9'
s

输出:
©

  创建了一个s带有 Unicode 代码点的字符串\u00A9。请注意,\u代码点开头的 是必需的。没有它,Python 将无法转换代码点。上述代码的输出返回相应的 Unicode 符号,Python 编程encode()函数将字符串转换为字节字符串。要演示这一点,请打开 Python 交互式控制台并键入以下代码:

 '?'.encode('utf-8')

输出:
b'\xf0\x9f\x85\xa5'

  每个字节\x前面都有一个,这表明它是一个十六进制数。注意:在 Windows 和 Mac 上键入特殊的 Unicode 字符是不同的。

  接下来,使用该decode()函数将字节字符串转换回字符串。该decode()函数接受编码类型作为参数。另外值得一提的是,该decode()函数只能对字节串进行解码,使用b字符串开头的字母指定。

b'\xf0\x9f\x85\xa5'.decode('utf-8')

输出:
'?'

  推荐:如何在Python中设置虚拟环境

2、在Python中规范化Unicode

  在 Python 中规范化 Unicode。规范化有助于确定以不同字体书写的两个字符是否相同,这在具有不同代码点的两个字符产生相同结果时很有用。

在Python中规范化Unicode
如何在Python中使用Unicode

  下面的代码示例进一步演示了这一点。打开 Python 控制台并输入以下内容:

styled_R = 'ℜ'
normal_R = 'R'
styled_R == normal_R

输出:
False

  代码打印False为输出,因为 Python 字符串不认为这两个字符相同。这种区分能力是规范化在使用 Unicode 时很重要的原因。

  在Unicode中,一些字符是通过将两个或多个字符组合成一个字符而构成的。在这种情况下,规范化很重要,它可以使您的字符串彼此保持一致。

s1 =  'hôtel'
s2 = 'ho\u0302tel'
len(s1), len(s2)

输出:
(5, 6)

  上面的输出表明,这两个字符串由相同的字符组成,但长度不同,这意味着它们将不相等。在同一控制台中键入以下内容以对其进行测试:

s1 == s2

输出:
False

  尽管字符串变量s1和s2产生相同的 Unicode 字符,但它们的长度不同,因此不相等。

  推荐:如何使用Python获取今天的日期和时间

3、规范化Unicode

  normalize()在此步骤中,您将使用模块中 Python 的 unicodedata 库中的函数对Unicode 字符串进行规范化,该函数unicodedata提供字符查找和规范化功能。该normalize()函数可以采用规范化形式作为其第一个参数,并将被规范化的字符串作为第二个参数。Unicode 有四种规范化形式可供您使用:NFD、NFC、NFKD 和 NFKC。

规范化Unicode
如何在Python中使用Unicode

  NFD规范化形式将一个字符分解为多个组合字符。它使您的文本不区分重音,这在搜索和排序时可能很有用。您可以通过将字符串编码为字节来做到这一点。

from unicodedata import normalize
s1 =  'hôtel'
s2 = 'ho\u0302tel'
s1_nfd = normalize('NFD', s1)
len(s1), len(s1_nfd)

输出:
(5, 6)

  如示例所示,规范化字符串s1将其长度增加一个字符。这是因为该ô符号被拆分为两个字符o和ˆ,您可以使用以下代码确认这一点:

s1.encode(), s1_nfd.encode()

输出:
(b'h\xc3\xb4tel', b'ho\xcc\x82tel')

  推荐:如何在Python中创建表格

4、解决Python中的Unicode错误

  在 Python 中处理 Unicode 时,会出现两种类型的 Unicode 错误,UnicodeEncodeError 和 UnicodeDecodeError。Unicode 编码是使用特定编码将 Unicode 字符串转换为字节的过程。当尝试对包含无法以指定编码表示的字符的字符串进行编码时,会发生 UnicodeEncodeError。

  可以通过在函数中使用errors参数来处理 UnicodeEncodeError encode()。该errors参数可以具有以下三个值之一:ignore、replace和xmlcharrefreplace。

  推荐:Python错误处理

总结

  以上是晓得博客为你介绍的如何在Python中使用Unicode的全部内容,编码和解码字符串,使用 NFD、NFC、NFKD 和 NFKC 规范化数据,并解决了 Unicode 错误,还在涉及排序和搜索的场景中使用了规范化形式。这些技术将帮助您使用 Python 处理 Unicode 问题。

  推荐:零基础如何开始学习Python

给文章评分

晓得博客,版权所有丨如未注明,均为原创
晓得博客 » 如何在Python中使用Unicode

转载请保留链接:https://www.pythonthree.com/how-to-work-with-unicode-in-python/

Claude、Netflix、Midjourney、Chatgpt Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折

Chatgpt-Plus注册购买共享账号
滚动至顶部