重点实验室网站建设的意义,办公系统,哪里建设网站,广州网站seo地址Unicode 万国码 在 Python 3 中#xff0c;字符串由 Unicode 表示#xff0c;而不是字节。ASCII 码是定义字符数字代码的最著名的标准。数字值最初只定义 128 个字符#xff0c;因此 ASCII 只包含控制代码、数字、小写字母、大写字母等。然而#xff0c;我们不足以表示世界…
Unicode 万国码 在 Python 3 中字符串由 Unicode 表示而不是字节。ASCII 码是定义字符数字代码的最著名的标准。数字值最初只定义 128 个字符因此 ASCII 只包含控制代码、数字、小写字母、大写字母等。然而我们不足以表示世界各地存在的重音字符、汉字或表情符号等字符。因此Unicode 被开发来解决这个问题。它定义了代码点来表示各种字符如 ASCII但字符数多达 1,111,998 个。
String 字符串 在 Python 2 中字符串以字节表示而不是 Unicode。Python 提供了不同类型的字符串例如 Unicode 字符串、原始字符串等。在这种情况下如果我们想声明一个 Unicode 字符串我们为字符串文字添加 u 前缀。
s Café # byte string
s
Caf\xc3\xa9type(s)
type stru uCafé # unicode string
u
uCaf\xe9type(u)
type unicode 在 Python 3 中字符串用 Unicode 表示。如果我们想表示字节字符串我们为字符串文字添加 b 前缀。请注意早期的 Python 版本3.0-3.2不支持 u 前缀。为了减轻从 Python 2 迁移 Unicode 感知应用程序的痛苦Python 3.3 再次支持字符串文字的 u 前缀。
s Café
type(s)
class strs
Cafés.encode(utf-8)
bCaf\xc3\xa9s.encode(utf-8).decode(utf-8)
Café
Characters 字符 Python 2 将所有字符串字符作为字节。在这种情况下字符串的长度可能不等于字符的数量。例如Café 的长度是 5而不是 4因为 é 被编码为 2 字节的字符。
s Café
print([_c for _c in s])
[C, a, f, \xc3, \xa9]len(s)
5s uCafé
print([_c for _c in s])
[uC, ua, uf, u\xe9]len(s)
4 Python 3 将所有字符串字符视为 Unicode 码点。字符串的长度始终等同于字符的数量。
s Café
print([_c for _c in s])
[C, a, f, é]len(s)
4bs bytes(s, encodingutf-8)
print(bs)
bCaf\xc3\xa9len(bs)
5
移植 unicode(s, ‘utf-8’) unicode()内置函数在 Python 3 中被删除那么转换表达式 unicode(sutf-8)的最佳兼容方法是什么可以在Python2和Python3中通用呢
# python2 版本
s Café
unicode(s, utf-8)
uCaf\xe9s.decode(utf-8)
uCaf\xe9unicode(s, utf-8) s.decode(utf-8)
True# python3 版本
s Café
s.decode(utf-8)
AttributeError: str object has no attribute decode 以上栗子可以看到decode()不能对Unicode编码的字符串进行反编码。
ord函数 ord 是一个强大的内置函数它用于返回给定字符的Unicode数值即该字符在Unicode表中的位置。
s uCafé
for _c in s: print(U%04x % ord(_c))U0043
U0061
U0066
U00e9u 中文
for _c in u: print(U%04x % ord(_c))U4e2d
U6587
Encoding 编码 Unicode 字符串转换为Byte字节即为encoding编码。
s uCafé
type(s.encode(utf-8))
class bytes 相反如果Byte字节转为Unicode字符为decoding反编码。
s bytes(Café, encodingutf-8)
s.decode(utf-8)
Café 当Byte字节字符串无法解码为 Unicode 字符串时Python 会引发 UnicodeDecodeError的异常。如果我们想避免这个异常我们可以在解码中传递替换、反斜杠替换或忽略错误的参数。
u b\xff
u.decode(utf-8, strict)Traceback (most recent call last):File stdin, line 1, in module
UnicodeDecodeError: utf-8 codec cant decode byte 0xff in position 0: invalid start byte# use UFFFD, REPLACEMENT CHARACTER
u.decode(utf-8, replace)
\ufffd# inserts a \xNN escape sequence
u.decode(utf-8, backslashreplace)
\\xff# leave the character out of the Unicode result
u.decode(utf-8, ignore)定义长字符串 以下是定义多行长字符串的几种方法。
# 普通单引号
s This is a very very very long python string# 反斜杠末尾断行
s This is a very very very \long python string# 使用小括号
s (This is a very very very long python string
)# 使用号连接
s (This is a very very very long python string
)# 使用三引号加反斜杠
s This is a very very very \
long python string
学废了嘛如有错误请指正感谢。