python转换字符串介绍

前言

Python 中字符串的转换,这是编程中非常基础且高频的操作,核心分为两类:一是其他类型转字符串,二是字符串转其他类型(如整数、浮点数、布尔值等),我会分场景给出具体用法和示例,确保你能直接套用。

一、核心场景 1:其他类型 → 字符串(最常用)

Python 中最通用的方法是 str() 函数,能将几乎所有类型(数字、布尔值、列表、字典等)转为字符串格式。

  1. 基础类型转字符串
python 复制代码
# 1. 整数 → 字符串
num_int = 123
str_int = str(num_int)
print(type(str_int), str_int)  # <class 'str'> 123

# 2. 浮点数 → 字符串
num_float = 3.14
str_float = str(num_float)
print(type(str_float), str_float)  # <class 'str'> 3.14

# 3. 布尔值 → 字符串(True→"True",False→"False")
bool_val = True
str_bool = str(bool_val)
print(type(str_bool), str_bool)  # <class 'str'> True

# 4. 列表/字典 → 字符串(保留原格式)
list_val = [1, 2, 3]
str_list = str(list_val)
print(type(str_list), str_list)  # <class 'str'> [1, 2, 3]

dict_val = {"name": "Tom", "age": 18}
str_dict = str(dict_val)
print(type(str_dict), str_dict)  # <class 'str'> {'name': 'Tom', 'age': 18}
  1. 进阶:格式化拼接转字符串(更灵活)
    如果需要自定义字符串格式,推荐用 f-string(Python 3.6+ 最佳实践):
python 复制代码
name = "Alice"
age = 20
# f-string 直接嵌入变量,自动转字符串
str_info = f"姓名:{name},年龄:{age}"
print(str_info)  # 姓名:Alice,年龄:20

二、核心场景 2:字符串 → 其他类型(需注意格式匹配)

转换时要确保字符串内容符合目标类型的格式,否则会抛出 ValueError,建议配合异常处理。

  1. 字符串 → 整数 / 浮点数
python 复制代码
# 1. 字符串 → 整数(字符串必须是纯数字,不能有小数点/字母)
str_num1 = "456"
int_num = int(str_num1)
print(type(int_num), int_num)  # <class 'int'> 456

# 2. 字符串 → 浮点数(支持纯数字/带小数点的字符串)
str_num2 = "7.89"
float_num = float(str_num2)
print(type(float_num), float_num)  # <class 'float'> 7.89

# 3. 异常处理(避免格式错误崩溃)
str_invalid = "12a3"
try:
    int(str_invalid)
except ValueError:
    print("字符串格式错误,无法转为整数")  # 输出:字符串格式错误,无法转为整数
  1. 字符串 → 布尔值
    bool() 转换规则:空字符串 → False,非空字符串 → True(即使是 "False" 也会转成 True):
python 复制代码
# 空字符串 → False
str_empty = ""
bool_empty = bool(str_empty)
print(bool_empty)  # False

# 非空字符串 → True(无论内容是什么)
str_false = "False"
bool_false = bool(str_false)
print(bool_false)  # True

# 正确转换"True"/"False"为布尔值的方法
def str_to_bool(s):
    if s.lower() == "true":
        return True
    elif s.lower() == "false":
        return False
    else:
        raise ValueError("字符串必须是 'True' 或 'False'")

print(str_to_bool("True"))  # True
print(str_to_bool("false"))  # False
  1. 字符串 → 列表 / 字典(需用专用方法)
    直接用 str() 转的字符串无法直接转回原结构,需用 eval() 或 json 模块(推荐 json,更安全):
python 复制代码
# 方式1:eval()(简单但有安全风险,不建议处理未知字符串)
str_list = "[1,2,3]"
list_val = eval(str_list)
print(type(list_val), list_val)  # <class 'list'> [1,2,3]

# 方式2:json模块(推荐,处理字典/列表更安全)
import json
str_dict = '{"name":"Tom","age":18}'  # 注意:json要求字符串用双引号
dict_val = json.loads(str_dict)
print(type(dict_val), dict_val)  # <class 'dict'> {'name': 'Tom', 'age': 18}

三、拓展:字符串编码 / 解码转换

处理中文、特殊字符时,需要用到字符串与字节的转换(编码 / 解码):

python 复制代码
# 字符串 → 字节(编码,常用utf-8)
str_zh = "你好"
bytes_zh = str_zh.encode("utf-8")
print(type(bytes_zh), bytes_zh)  # <class 'bytes'> b'\xe4\xbd\xa0\xe5\xa5\xbd'

# 字节 → 字符串(解码)
str_zh2 = bytes_zh.decode("utf-8")
print(type(str_zh2), str_zh2)  # <class 'str'> 你好

总结

  1. 其他类型转字符串:优先用 str() 通用转换,自定义格式用 f-string;
  2. 字符串转其他类型:
    • 转数字用 int()/float(),注意格式匹配 + 异常处理;
    • 转布尔值避免直接用 bool(),自定义函数处理 "True"/"False" 更准确;
    • 转列表 / 字典推荐用 json.loads()(安全),而非 eval();
  3. 编码转换:字符串↔字节用 encode("utf-8")/decode("utf-8"),处理中文必备。
相关推荐
李昊哲小课11 小时前
Python itertools模块详细教程
数据结构·python·散列表
feifeigo12311 小时前
基于MATLAB的V-BLAST结构BER仿真
开发语言·matlab
lly20240611 小时前
Perl 数据库连接
开发语言
小白-Tester11 小时前
2026最新Postman安装教程[简单易懂]附安装包
开发语言·lua
小猪弟11 小时前
【app逆向】某壳逆向的wll-kgsa参数,signature参数
python·逆向·wll-kgsa·signature·
极客小X11 小时前
一键解决dll缺失修复工具+安装使用+修复教程 2026最新版
windows·经验分享
春日见11 小时前
端到端大模型自动驾驶
java·开发语言·驱动开发·docker·自动驾驶·计算机外设
A.A呐12 小时前
【QT第三章】常用控件2
开发语言·qt
对方正在长头发22512 小时前
写了个 Windows 端口映射管理工具,再也不用敲命令了
python