百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python 数据转换详解(python将数据转换为字符串)

off999 2025-06-10 00:34 42 浏览 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)  # 0

2. 字符串与数字的转换

# 字符串转整数
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))      # 255

2. 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}
# 无法恢复原始列表的顺序和重复元素

一看就会,一写就废,你学废了吗?

相关推荐

国家企业信用信息公示系统湖北

首先要确定你输入的登录信息是正确的,主要是看联络员手机号显示的前三位和后三位是否正确,如果正确的话点获取验证码还收不到短信的话,有可能是工商局系统内备案的手机号码中间的某位数是错误的,我出现过同样的问...

公积金贷款利率是多少(五年期公积金贷款利率是多少)

自2022年10月1日起,公积金贷款利率,手套住房:五年期以下(含五年),贷款利率2.6%,五年期以上3.1%;第二套住房公积金贷款利率,五年期以下(含五年)3.025%,五年期以上3.575%。你好...

电脑总自动关机怎么解决(电脑总自动关机怎么办)

1、主机散热不良,这是最常见的一种,主要表现为:电脑声音不正常,如风扇转动的声音;主板等配件上有烧焦的痕迹或者闻一闻有烧焦的气味;cpu等主要元器件的温度,如cpu的温度过高等。2、病毒木马的...

win7激活必须联网吗(win7激活要钱吗)

Windows操作系统在安装之后,需要激活才能正常使用。如果没有联网的情况下安装Windows操作系统,可以通过以下两种方法进行激活:1.电话激活:在Windows安装界面选择“电话激活”选项进行激活...

有必要买移动硬盘吗

  1、虽然可以,但是不合算也不适合。  2、固态硬盘相对机械硬盘而言,胜出的是性能,软肋是寿命。  3、目前的硬盘盒大都是USB接口,成了固态硬盘的瓶颈,限制了固态硬盘性能的发挥。而固态硬盘最致命的...

如何注册邮箱免费注册(如何注册邮箱免费注册网易)
  • 如何注册邮箱免费注册(如何注册邮箱免费注册网易)
  • 如何注册邮箱免费注册(如何注册邮箱免费注册网易)
  • 如何注册邮箱免费注册(如何注册邮箱免费注册网易)
  • 如何注册邮箱免费注册(如何注册邮箱免费注册网易)
移动宽带路由器怎么设置(移动宽带路由器怎么设置桥接模式)

1.结论:移动路由器设置过程包括SIM卡安装、路由器连接WiFi和设备、路由器管理界面设置等步骤。2.深入分析:(1)SIM卡安装1确认您购买的移动路由器支持的SIM卡规格,如果未知请咨询销售...

笔记本cpu天梯图全系列(笔记本cpu天梯图2020年最新版)

麒麟9000>>麒麟9000e>麒麟990>麒麟990e>麒麟980>麒麟985>麒麟820>麒麟820e>麒麟810>麒麟970>麒麟960>麒麟710>大于麒麟710a>麒麟950>麒麟955>...

怎么查询家里wifi密码(怎么查询家里wifi密码是多少)

一、通过已连接wifi的电脑查看1、找到电脑右下角的无线网图标,就是类似信号的图标,点开;2、然后右键自己的wifi名称,选择“属性”;3、进去之后勾选“显示字符”,然后就可以看见密码框的密码以数字显...

分区工具diskgenius怎么合并分区

DiskGenius是一款功能全面的磁盘管理工具,其可以帮助我们进行磁盘分区管理,包括创建新分区、删除分区、扩展分区等。如果您想要合并分区到C盘,可以按照以下步骤进行操作:1.打开DiskGeniu...

windows10易升怎么用(微软windows10易升使用教程)

windows10易升是微软官方的。windows10易升是微软官方发布的升级助理或者叫升级助手(官方下载),帮助你升级到win10最新版本,同时也帮助Win7Win8.1用户升级到Windows1...

300兆光纤买什么路由器(300兆光纤买3000m的路由器有用吗)

对于300Mbps的网速,推荐选择支持AC750及以上的路由器型号。比如TP-LinkArcherC20、D-LinkDIR-816、NetgearR6020等,都是性价比不错的选择。此类路由...

windows10产品密钥查询(查看windows10产品密钥)

要查看电脑上Windows10的产品密钥,你可以按照以下步骤进行操作:打开“开始”菜单,然后点击“设置”图标(齿轮状图标)。在“设置”窗口中,点击“更新和安全”选项。在左侧导航栏中,选择“激活”选项...

电脑怎样设置密码和更改密码
  • 电脑怎样设置密码和更改密码
  • 电脑怎样设置密码和更改密码
  • 电脑怎样设置密码和更改密码
  • 电脑怎样设置密码和更改密码
电脑总死机卡住不动怎么办(电脑老是死机卡住)

如果你的电脑经常卡死,而且只能强制关机,别忘了说明电脑这个配置不够造成的,你需要提高一下它的配置,比如说加一个内存条或者换一个固态硬盘,这样才能够正常运行,不然的话这种电脑是没有办法使用的,现在电脑都...

取消回复欢迎 发表评论: