WEBKT

Python 字符串与数字转换全攻略:从入门到精通

93 0 0 0

为什么要进行字符串与数字的转换?

基础转换:int()、float() 和 str()

字符串转整数:int()

字符串转浮点数:float()

数字转字符串:str()

进阶技巧:处理特殊格式的字符串

千位分隔符

货币符号

百分号

其他特殊字符

字符串格式化:format() 方法和 f-string

format() 方法

f-string (Formatted String Literals)

异常处理:try-except

总结与实践建议

大家好,我是你们的编程伙伴“代码小旋风”!今天咱们来聊聊 Python 中一个看似简单,实则暗藏玄机的话题——字符串与数字之间的转换。别看这只是个小小的类型转换,里面可有不少门道。如果你在处理数据、构建 API 或者进行各种 Python 开发时遇到过类型转换的困扰,那么这篇文章就是为你量身定制的!

为什么要进行字符串与数字的转换?

在 Python 编程中,字符串和数字是两种最基本的数据类型。很多时候,我们需要在这两种类型之间进行转换,原因主要有以下几点:

  1. 数据输入:用户通过键盘输入的数据通常以字符串形式存在,如果我们需要进行数值计算,就需要将其转换为数字。
  2. 数据输出:有时候,我们需要将数字格式化为特定样式的字符串进行输出,比如货币、百分比等。
  3. 数据处理:在处理文件、网络数据等场景中,经常会遇到字符串和数字混合的情况,需要灵活地进行类型转换。
  4. API 交互:很多 API 接口返回的数据是 JSON 格式,其中数字也常常以字符串形式表示。

基础转换:int()float()str()

Python 提供了几个内置函数来实现字符串与数字之间的基本转换:

  • int(x [,base]):将 x 转换为整数。base 参数指定进制,默认为 10。
  • float(x):将 x 转换为浮点数。
  • str(x):将 x 转换为字符串。

字符串转整数:int()

# 十进制字符串
num_str = "123"
num_int = int(num_str)
print(num_int, type(num_int)) # 输出:123 <class 'int'>
# 二进制字符串
bin_str = "101101"
bin_int = int(bin_str, 2) # 指定 base=2
print(bin_int, type(bin_int)) # 输出:45 <class 'int'>
# 十六进制字符串
hex_str = "1A"
hex_int = int(hex_str, 16) # 指定 base=16
print(hex_int, type(hex_int)) # 输出:26 <class 'int'>
# 错误示例:非数字字符串
# invalid_str = "abc"
# invalid_int = int(invalid_str) # ValueError: invalid literal for int() with base 10: 'abc'

注意: int() 函数只能转换合法的数字字符串,如果字符串中包含非数字字符(除了可选的正负号),或者进制不匹配,会抛出 ValueError 异常。

字符串转浮点数:float()

num_str = "3.14159"
num_float = float(num_str)
print(num_float, type(num_float)) # 输出:3.14159 <class 'float'>
# 科学计数法
sci_str = "1.23e-5"
sci_float = float(sci_str)
print(sci_float, type(sci_float)) # 输出:1.23e-05 <class 'float'>
# 错误示例:非数字字符串
# invalid_str = "abc"
# invalid_float = float(invalid_str) # ValueError: could not convert string to float: 'abc'

注意: float() 函数可以转换包含小数点或科学计数法的字符串,但同样不能转换非数字字符串。

数字转字符串:str()

num_int = 123
num_str = str(num_int)
print(num_str, type(num_str)) # 输出:123 <class 'str'>
num_float = 3.14159
num_str = str(num_float)
print(num_str, type(num_str)) # 输出:3.14159 <class 'str'>

str() 函数可以将整数、浮点数等各种数字类型转换为字符串。

进阶技巧:处理特殊格式的字符串

在实际应用中,我们可能会遇到各种特殊格式的数字字符串,比如包含千位分隔符、货币符号、百分号等。下面介绍一些处理这些特殊格式的方法。

千位分隔符

num_str = "1,234,567.89"
# 方法一:先替换掉逗号,再转换
num_str = num_str.replace(",", "")
num_float = float(num_str)
print(num_float) # 输出:1234567.89
# 方法二:使用 locale 模块(需要先设置 locale)
# import locale
# locale.setlocale(locale.LC_ALL, '') # 设置为本地默认 locale
# num_float = locale.atof(num_str)
# print(num_float)

货币符号

num_str = "$1,234.56"
# 方法一:先替换掉货币符号和逗号,再转换
num_str = num_str.replace("$", "").replace(",", "")
num_float = float(num_str)
print(num_float) # 输出:1234.56

百分号

num_str = "50%"
# 方法一:先替换掉百分号,再除以 100
num_str = num_str.replace("%", "")
num_float = float(num_str) / 100
print(num_float) # 输出:0.5

其他特殊字符

对于其他特殊字符,我们可以根据具体情况使用 replace() 方法或其他字符串处理方法进行预处理,然后再进行转换。处理的思路无外乎就是,将字符串中不属于数字的部分进行替换。

字符串格式化:format() 方法和 f-string

除了将数字转换为字符串,我们还经常需要将数字格式化为特定样式的字符串,比如保留指定位数的小数、添加千位分隔符、设置对齐方式等。Python 提供了 format() 方法和 f-string 两种强大的字符串格式化工具。

format() 方法

num = 1234.5678
# 保留两位小数
formatted_str = "{:.2f}".format(num)
print(formatted_str) # 输出:1234.57
# 添加千位分隔符
formatted_str = "{:,}".format(num)
print(formatted_str) # 输出:1,234.568
# 同时保留两位小数和添加千位分隔符
formatted_str = "{:,.2f}".format(num)
print(formatted_str) # 输出:1,234.57
# 设置宽度和对齐方式
formatted_str = "{:>10.2f}".format(num) # 右对齐,宽度为 10
print(formatted_str) # 输出: 1234.57
formatted_str = "{:<10.2f}".format(num) # 左对齐,宽度为 10
print(formatted_str) # 输出:1234.57
formatted_str = "{:^10.2f}".format(num) # 居中对齐,宽度为 10
print(formatted_str) # 输出: 1234.57

f-string (Formatted String Literals)

f-string 是 Python 3.6 引入的一种更简洁、更强大的字符串格式化方式。它使用 fF 前缀,并在字符串中使用花括号 {} 包裹表达式。

num = 1234.5678
# 保留两位小数
formatted_str = f"{num:.2f}"
print(formatted_str) # 输出:1234.57
# 添加千位分隔符
formatted_str = f"{num:,}"
print(formatted_str) # 输出:1,234.568
# 同时保留两位小数和添加千位分隔符
formatted_str = f"{num:,.2f}"
print(formatted_str) # 输出:1,234.57
# 设置宽度和对齐方式
formatted_str = f"{num:>10.2f}" # 右对齐,宽度为 10
print(formatted_str) # 输出: 1234.57
formatted_str = f"{num:<10.2f}" # 左对齐,宽度为 10
print(formatted_str) # 输出:1234.57
formatted_str = f"{num:^10.2f}" # 居中对齐,宽度为 10
print(formatted_str) # 输出: 1234.57

f-string 的功能与 format() 方法基本相同,但在很多情况下更简洁易读。

异常处理:try-except

在进行字符串与数字转换时,难免会遇到无法转换的情况。为了避免程序崩溃,我们需要使用 try-except 语句来捕获和处理异常。

def convert_to_int(num_str):
try:
num_int = int(num_str)
return num_int
except ValueError:
print(f"Error: '{num_str}' cannot be converted to an integer.")
return None
# 测试
print(convert_to_int("123")) # 输出:123
print(convert_to_int("abc")) # 输出:Error: 'abc' cannot be converted to an integer. None

通过 try-except,我们可以优雅地处理转换错误,并给用户提供友好的提示。

总结与实践建议

字符串与数字转换是 Python 编程中的常见任务,掌握好这些技巧可以让你事半功倍。以下是一些实践建议:

  1. 明确数据类型:在进行转换之前,一定要明确变量的数据类型,避免不必要的错误。
  2. 选择合适的转换函数:根据需要选择 int()float()str()
  3. 处理特殊格式:使用 replace() 等方法预处理特殊格式的字符串。
  4. 善用格式化工具:使用 format() 方法或 f-string 格式化数字字符串。
  5. 异常处理:使用 try-except 捕获和处理转换异常。
  6. 多加练习: 任何编程技巧都需要多多练习才能转化为自己趁手的工具。

希望这篇文章能帮助你更好地理解和掌握 Python 中字符串与数字转换的技巧。如果你有任何问题或想法,欢迎在评论区留言交流!下次再见!

代码小旋风 Python类型转换字符串

评论点评

打赏赞助
sponsor

感谢您的支持让我们更好的前行

分享

QRcode

https://www.webkt.com/article/7627