数据转换:将自身的数据类型变成新的数据类型,并拥有新类型的所有功能的过程即为数据转换
1.字符串与数字转换:
- 字符串转换成数字,必须是数字组成的字符串才行
- 数字转换成字符串,无要求
- 整型、浮点型转换成字符串:str函数
- 字符串转换成整型:int函数
- 字符串转换成浮点型:float函数
例:
number1 = 123
number2 = 123.11
str1 = '88'
str2 = '66.10'
# 数字类型转换成字符串
number1_str = str(number1)
number2_str = str(number2)
# 字符串转换成数字类型
str1_int = int(str1)
str2_float = float(str1)
print('整型转化成字符串:{}'.format(type(number1_str)))
print('浮点型转化成字符串:{}'.format(type(number2_str)))
print('字符串转化成整型:{}'.format(type(str1_int)))
print('字符串转化成浮点型:{}'.format(type(str2_float)))
结果:
2.字符串与列表转换
字符串转换成列表:split函数
- 将字符串以一定规则切割转成列表
- string.split(sep=None, maxsplit=-1)
- sep:切割的规则符号,不添加则默认空格,若字符串无空格则不分割生成列表
- maxsplit:根据切割符号切割的此时,默认-1无限制
- 返回一个列表
例:
a = '123'
b = '1 2 3'
c = '1,22,3'
# 没有空格的字符串,整个字符串作为一个元素转换成列表
print(a.split())
# 有空格,以空格分割转换成列表,有2个空格,分割成3个元素
print(b.split())
# 设置分割符号的逗号,且只分割1次,这里分割一次,变成2个元素
print(c.split(',', 1))
结果:
列表转换成字符串:join函数
- 将列表以一定规则转换成字符串
- ‘sep’.join(iterable)
- sep:生成字符串的规则符号
- iterable:非数字类型的列表或元组或集合
- 返回一个字符串
- 只有字符串类型的列表才可以使用join,不然会报错
例:
test = ['b', 'c', 'a']
print('列表:{}'.format(test))
# 使用join将列表转换成字符串,并将各元素用.隔开
#
new_test1 = '.'.join(test)
print('使用join转换成字符串:{}'.format(new_test1))
# sorted可以对任何类型的数据进行排序,前面列表学的sort是列表的内置函数,只有类别类型的可以用
test2 = sorted(test) # 使用sorted将
print('使用sorted对列表排序:{}'.format(test2))
结果:
可以使用sorted对字符串排序:会使字符串在排序的同时转换成列表,此时可以再使用join将列表转换成字符串
例:
test = 'bca'
print('字符串:{}'.format(test))
new_test = sorted(test) # 使用sorted排序
print('字符串排序,但是会转换成列表:{}'.format(new_test))
str_test = ''.join(new_test) # 将列表转换成字符串
print('将列表转换成字符串:{}'.format(str_test))
结果:
3.字符串与bytes的转换
- bytes类型:是二进制的数据流,可以理解成一种特殊的字符串;字符串类型前面加上b表示bytes类型
例:
a = 'my name is mike'
b = b'my name is mike'
print('{}:数据类型:{}'.format(a, type(a)))
print('{}:数据类型:{}'.format(b, type(b)))
# bytes类型是一种特殊的字符串类型,可以使用字符串的所有内置函数
print('将bytes类型变量首字母变成大写:{}'.format(b.capitalize()))
# 要注意bytes类型变量使用函数,若函数中有参数,要注意里面的参数也要是bytes类型才可以
print('将bytes类型变量的元素进行替换:{}'.format(b.replace(b'mike', b'haha')))
print('将bytes类型变量进行切割:{}'.format(b[:7]))
结果:
可以使用dir函数查看变量有哪些函数:
例:
b = b'my name is mike'
print(dir(b))
结果:
字符串转换成bytes:使用函数encode
- 用法:string.encode(encoding=‘utf-8’, errors-'strict)
- encoding:转换的编码格式,如ascii、gbk、默认utf-8
- errors:出错时的处理方法,默认strict,直接抛错误,也可以选择ignore忽略错误
- 返回一个bytes类型的数据
bytes转换成字符串类型:使用函数decode
- 用法:bytes.encode(encoding=‘utf-8’, errors-'strict)
- encoding:转换的编码格式,如ascii、gbk、默认utf-8
- errors:出错时的处理方法,默认strict,直接抛错误,也可以选择ignore忽略错误
- 返回一个字符串类型的数据
例:
a = 'my name is 张三'
print('{}:数据类型:{}'.format(a, type(a)))
# 将字符串转换成bytes类型
bytes_a = a.encode('utf-8')
print('{}:数据类型:{}'.format(bytes_a, type(bytes_a)))
# 将bytes转换成字符串
str_a = bytes_a.decode('utf-8')
print('{}:数据类型:{}'.format(str_a, type(str_a)))
结果:
4.列表、集合和元组的转换
例:
test = ['a', 'b', 'c']
set_test = set(test) # 列表转换成集合
tuple_test = tuple(test) # 列表转换成元组
print('列表:{}'.format(test))
print('列表转换成集合:{}'.format(set_test))
print('列表转换成元组:{}'.format(tuple_test))
test1 = (1, 'a', '!')
set_test1 = set(test1) # 元组转换成集合
list_test1 = list(test1) # 元组转换成列表
print('元组:{}'.format(test1))
print('元组转换成集合:{}'.format(set_test1))
print('元组转换成列表:{}'.format(list_test1))
test2 = {'aa', 123, 'k'}
list_test2 = list(test2) # 集合转换成列表
tuple_test2 = tuple(test2) # 集合转换成元组
print('集合:{}'.format(test2))
print('集合转换成列表:{}'.format(list_test2))
print('集合转换成元组:{}'.format(tuple_test2))
结果: