Python 数据转换详解(python将数据转换为字符串)
off999 2025-06-10 00:34 34 浏览 0 评论
数据转换是编程中非常重要的操作,Python 提供了多种方式来实现不同类型之间的转换。下面我将详细讲解 Python 中的各种数据转换方法。
一、基本数据类型转换
1. 数字类型之间的转换
# 整数转浮点数
num_int = 10
num_float = float(num_int) # 10.0
# 浮点数转整数(会截断小数部分)
num_float = 3.14
num_int = int(num_float) # 3
# 布尔值转数字
bool_true = True
num_from_bool = int(bool_true) # 1
bool_false = False
num_from_bool = int(bool_false) # 02. 字符串与数字的转换
# 字符串转整数
str_num = "123"
int_num = int(str_num) # 123
# 字符串转浮点数
str_float = "3.14"
float_num = float(str_float) # 3.14
# 数字转字符串
num = 42
str_num = str(num) # "42"
# 注意:无效转换会引发 ValueError
try:
invalid = int("hello")
except ValueError as e:
print(f"错误: {e}")3. 布尔值转换
# 其他类型转布尔
# 以下会转换为 False
print(bool(0)) # False
print(bool(0.0)) # False
print(bool("")) # False
print(bool([])) # False
print(bool({})) # False
print(bool(None)) # False
# 其他值通常转换为 True
print(bool(1)) # True
print(bool(-1)) # True
print(bool(" ")) # True
print(bool([1])) # True二、容器类型转换
1. 列表(list)与其他容器的转换
# 元组转列表
my_tuple = (1, 2, 3)
my_list = list(my_tuple) # [1, 2, 3]
# 集合转列表
my_set = {1, 2, 3}
my_list = list(my_set) # [1, 2, 3](顺序可能不同)
# 字典转列表(默认获取键)
my_dict = {'a': 1, 'b': 2}
key_list = list(my_dict) # ['a', 'b']
value_list = list(my_dict.values()) # [1, 2]
item_list = list(my_dict.items()) # [('a', 1), ('b', 2)]
# 字符串转列表
my_str = "hello"
char_list = list(my_str) # ['h', 'e', 'l', 'l', 'o']2. 元组(tuple)转换
# 列表转元组
my_list = [1, 2, 3]
my_tuple = tuple(my_list) # (1, 2, 3)
# 集合转元组
my_set = {1, 2, 3}
my_tuple = tuple(my_set) # (1, 2, 3)(顺序可能不同)
# 字典转元组
my_dict = {'a': 1, 'b': 2}
key_tuple = tuple(my_dict) # ('a', 'b')3. 集合(set)转换
# 列表转集合(自动去重)
my_list = [1, 2, 2, 3]
my_set = set(my_list) # {1, 2, 3}
# 字符串转集合
my_str = "hello"
char_set = set(my_str) # {'h', 'e', 'l', 'o'}(去重且无序)4. 字典(dict)转换
# 键值对列表转字典
pairs = [('a', 1), ('b', 2)]
my_dict = dict(pairs) # {'a': 1, 'b': 2}
# 两个列表转字典(使用zip)
keys = ['a', 'b']
values = [1, 2]
my_dict = dict(zip(keys, values)) # {'a': 1, 'b': 2}
# 字典推导式
my_dict = {k: v for k, v in pairs} # {'a': 1, 'b': 2}三、高级数据转换
1. 进制转换
# 十进制转其他进制字符串
num = 255
print(bin(num)) # '0b11111111'(二进制)
print(oct(num)) # '0o377'(八进制)
print(hex(num)) # '0xff'(十六进制)
# 其他进制字符串转十进制
print(int('0b11111111', 2)) # 255
print(int('0o377', 8)) # 255
print(int('0xff', 16)) # 2552. ASCII码转换
# 字符转ASCII码
print(ord('A')) # 65
# ASCII码转字符
print(chr(65)) # 'A'3. 字节(bytes)转换
# 字符串转字节
my_str = "hello"
byte_data = my_str.encode('utf-8') # b'hello'
# 字节转字符串
new_str = byte_data.decode('utf-8') # 'hello'
# 整数列表转字节
int_list = [65, 66, 67]
byte_data = bytes(int_list) # b'ABC'4. JSON转换
import json
# Python对象转JSON字符串
data = {'name': 'Alice', 'age': 25}
json_str = json.dumps(data) # '{"name": "Alice", "age": 25}'
# JSON字符串转Python对象
new_data = json.loads(json_str) # {'name': 'Alice', 'age': 25}四、自定义对象转换
1. 实现__str__和__repr__
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
def __repr__(self):
return f"Person('{self.name}', {self.age})"
p = Person("Alice", 25)
print(str(p)) # Person(name=Alice, age=25)
print(repr(p)) # Person('Alice', 25)2. 实现转换方法
class Temperature:
def __init__(self, celsius):
self.celsius = celsius
def to_fahrenheit(self):
return (self.celsius * 9/5) + 32
temp = Temperature(100)
print(temp.to_fahrenheit()) # 212.0五、注意事项
类型安全:转换前最好检查类型或使用try-except处理可能的异常
try:
num = int("123a")
except ValueError:
print("无法转换为整数")精度丢失:浮点数转整数会截断小数部分
print(int(3.99)) # 3(不是4)隐式转换:某些操作会自动进行类型转换
print(1 + 2.0) # 3.0(整数自动转为浮点数)不可逆转换:某些转换会丢失信息且不可逆
original = [1, 2, 2, 3]
converted = set(original) # {1, 2, 3}
# 无法恢复原始列表的顺序和重复元素一看就会,一写就废,你学废了吗?
相关推荐
- 阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?
-
TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...
- 高流量大并发Linux TCP性能调优_linux 高并发网络编程
-
其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...
- 性能测试100集(12)性能指标资源使用率
-
在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...
- Linux 服务器常见的性能调优_linux高性能服务端编程
-
一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...
- Nginx性能优化实战:手把手教你提升10倍性能!
-
关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...
- 高并发场景下,Spring Cloud Gateway如何抗住百万QPS?
-
关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...
- Kubernetes 高并发处理实战(可落地案例 + 源码)
-
目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...
- 高并发场景下,Nginx如何扛住千万级请求?
-
Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...
- Spring Boot+Vue全栈开发实战,中文版高清PDF资源
-
SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...
- Docker-基础操作_docker基础实战教程二
-
一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...
- 你有空吗?跟我一起搭个服务器好不好?
-
来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...
- 部署你自己的 SaaS_saas如何部署
-
部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...
- Docker Compose_dockercompose安装
-
DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...
- 京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统
-
前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...
- Kubernetes (k8s) 入门学习指南_k8s kubeproxy
-
Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
