杰瑞科技汇

Python数字与Unicode如何转换?

  1. Python 的数字类型:我们通常使用的整数、浮点数等。
  2. Unicode 字符:计算机中表示文字和符号的编码标准。
  3. 数字字符与数字类型之间的转换:如何将表示数字的字符串(如 '5')转换成真正的数字(如 5),反之亦然。

Python 的数字类型

Python 提供了多种内置的数字类型,用于进行数学运算。

Python数字与Unicode如何转换?-图1
(图片来源网络,侵删)
类型 名称 描述 示例
int 整型 表示整数,没有大小限制(仅受内存限制)。 10, -5, 0
float 浮点型 表示带有小数点的数字,基于 IEEE 754 标准。 14, -0.001, 0
complex 复数 表示复数,由实部和虚部组成,虚部以 jJ 3+4j, -2j
bool 布尔型 TrueFalse 的子类,本质上也是整数 (True1, False0)。 True, False

这些是 Python 的核心数据类型,它们直接参与数学运算,而不是字符。

# 整型
a = 10
print(type(a))  # <class 'int'>
# 浮点型
b = 3.14
print(type(b))  # <class 'float'>
# 数学运算
print(a + b)   # 13.14

Unicode 与数字字符

Unicode 是一个字符集,它为世界上几乎所有的字符(包括字母、数字、标点、表情符号等)都分配了一个唯一的数字码点。

当我们谈论“数字 Unicode”时,通常指的是代表数字的字符在 Unicode 中的编码。

  • 数字字符:像 '0', '1', '2' ... '9' 这些都是字符,在 Python 中,它们属于 str (字符串) 类型。
  • Unicode 码点:每个字符都有一个唯一的数字码点。
    • 字符 '0' 的 Unicode 码点是 U+0030 (十进制是 48)。
    • 字符 '1' 的 Unicode 码点是 U+0031 (十进制是 49)。
    • 字符 '9' 的 Unicode 码点是 U+0039 (十进制是 57)。

在 Python 中,可以使用 ord() 函数获取一个字符的 Unicode 码点,使用 chr() 函数根据码点获取对应的字符。

Python数字与Unicode如何转换?-图2
(图片来源网络,侵删)
# 获取字符 '5' 的 Unicode 码点
char = '5'
code_point = ord(char)
print(f"字符 '{char}' 的 Unicode 码点是: {code_point}") # 53
# 使用 chr() 函数根据码点 53 获取字符
recovered_char = chr(code_point)
print(f"码点 {code_point} 对应的字符是: '{recovered_char}'") # '5'

重要区别

  • '5' (字符串):这是一个字符,你不能用它做数学计算,'5' + '5' 会得到 '55' (字符串拼接)。
  • 5 (整数):这是一个数字,你可以用它做数学计算,5 + 5 会得到 10

数字字符与数字类型的转换

这是编程中最常见的操作之一,当你从文件、网络或用户输入中读取数据时,通常得到的是字符串,即使它们看起来像数字,你需要将它们转换成真正的数字类型才能进行计算。

字符串 -> 数字

使用内置的 int()float() 函数。

# 字符串转整数
str_num = "123"
int_num = int(str_num)
print(f"类型: {type(int_num)}, 值: {int_num}") # <class 'int'>, 123
# 字符串转浮点数
str_float = "45.67"
float_num = float(str_float)
print(f"类型: {type(float_num)}, 值: {float_num}") # <class 'float'>, 45.67
# 如果字符串无法转换,会抛出 ValueError
try:
    int("hello")
except ValueError as e:
    print(f"转换失败: {e}") # invalid literal for int() with base 10: 'hello'

数字 -> 字符串

使用内置的 str() 函数。

# 整数转字符串
num_int = 789
str_from_int = str(num_int)
print(f"类型: {type(str_from_int)}, 值: {str_from_int}") # <class 'str'>, '789'
# 浮点数转字符串
num_float = 3.14159
str_from_float = str(num_float)
print(f"类型: {type(str_from_float)}, 值: {str_from_float}") # <class 'str'>, '3.14159'

Unicode 字符 -> 数字

如果一个 Unicode 字符代表一个数字(如 '7'),你可以先将其转换为字符串(它本身就是字符串),然后再转换为数字。

# Unicode 字符 '7' (本质上是字符串 '7')
unicode_char = '7'
# 1. 直接转换 (因为字符类型就是 str)
number = int(unicode_char)
print(f"字符 '{unicode_char}' 转换为数字: {number}") # 7
# 2. 获取码点再转换 (通常不这样做,但可以展示过程)
code_point = ord(unicode_char) # 得到 55
# 你不能直接用 chr(code_point) 转换,需要先处理
# 这说明直接对字符进行 int() 转换是更直接的方式

总结与关键点

概念 Python 类型 示例 用途
数字 int, float, complex 10, 14 数学计算、逻辑判断
数字字符 str '1', 显示、存储、文本处理
Unicode 码点 int 49 (字符 '1' 的码点) 字符的底层表示,用于字符集操作

核心要点

  1. 类型不同5 (数字) 和 '5' (字符串/字符) 是完全不同的东西,前者用于计算,后者用于表示文本。
  2. 转换是桥梁int('5')str(5) 是连接这两个世界的桥梁,在处理外部数据时至关重要。
  3. Unicode 是基础:字符串 '5' 在内存中存储的是其 Unicode 码点 U+0035,Python 的 str 类型是对 Unicode 的抽象,让你可以方便地操作字符,而无需关心其底层编码(UTF-8, UTF-16 等)。
  4. 数字的 Unicode 表示:除了 0-9,Unicode 还包含其他数字字符,
    • 罗马数字: (U+2160), (U+2161)
    • 带圈数字: (U+2460), (U+2461)
    • 上标/下标数字: (U+00B2), (U+2083)
    • 这些字符也可以用 ord() 获取码点,但它们不能直接用 int() 转换成普通的十进制整数。
# 其他数字字符示例
print(ord('①')) # 9312 (U+2460)
print(ord('²')) # 178  (U+00B2)
# 尝试转换带圈的数字,会失败
try:
    int('①')
except ValueError as e:
    print(f"转换失败: {e}") # invalid literal for int() with base 10: '①'

希望这个详细的解释能帮助你完全理解 Python 中数字和 Unicode 的关系!

分享:
扫描分享到社交APP
上一篇
下一篇