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"),处理中文必备。
相关推荐
希望之晨1 小时前
c++ 11 学习 override
开发语言·c++·学习
doris82042 小时前
Python 正则表达式 re.findall()
java·python·正则表达式
Mrliu__2 小时前
Python高级技巧(六):正则表达式
开发语言·python·正则表达式
普通网友2 小时前
PL/SQL语言的正则表达式
开发语言·后端·golang
(initial)2 小时前
B-02. Shared Memory 深度优化:从 Bank Conflict 到 Tensor Core Swizzling
开发语言·c#
消失的旧时光-19432 小时前
智能指针(四):体系篇 —— 现代 C++ 内存管理全景图
开发语言·c++
码路飞2 小时前
Gemini 3.1 Pro 发布 3 天,我用同一个 API 跑了 3 家大模型横评,结果有点意外
python
丹牛Daniel3 小时前
Java解决HV000183: Unable to initialize ‘javax.el.ExpressionFactory‘
java·开发语言·spring boot·tomcat·intellij-idea·个人开发
天桥下的卖艺者3 小时前
R语言使用trajeR包进行组轨迹模型分析(gbtm- group based trajectory models)
开发语言·r语言