数据类型内置方法详解之字符串、字典
![image]()
1.数据类型内置方法详解之字符串
1.1 转大小写(只针对字母)
# 1.1 转大小写(只针对字母)
name1 = 'JaSoN123'
# 转全大写
print(name1.upper()) # JASON123
# 转全小写
print(name1.lower()) # jason123
# 练习:图片验证码
old_code = 'JO0Av'
print('返回给用户的验证码图片>>>:%s' % old_code)
new_code = input('请输入验证码>>>:').strip()
if new_code.lower() == old_code.lower():
print('验证正确')
else:
print('验证码输入错误,请重新输入')
1.2 验证是否是全大写/小写
# 1.2 验证是否是全大写/小写
# 是否是全大写
name1 = 'JaSoN123'
print(name1.isupper()) # 返回False
# 是否是全小写
print(name1.islower()) # 返回False
1.3 判断字符串是以指定字符开头或结尾
# 1.3 判断字符串是以指定字符开头或结尾
# 以指定字符开头
msg = 'please call me if you miss me'
print(msg.startswith('please')) # 返回True
print(msg.startswith('p')) # 返回True
print(msg.startswith('I')) # 返回False
# 以指定字符结尾
msg = 'please call me if you miss me'
print(msg.endswith('please')) # 返回False
print(msg.endswith('e')) # 返回True
print(msg.endswith('me')) # 返回True
1.4 格式化输出
# 1.4 格式化输出
# 1.4.1 占位符 %s,%d
# 1.4.2 字符串内置方法 format
# 第一种用法(类似占位符)
msg = 'my name is {0},my sex is {1}'
print(msg.format('jenny', '女')) # my name is jenny,my sex is 女
# 第二种用法 大括号内写format引用的值的索引值,可以打破顺序,且可以重复使用相同位置的值
msg = 'my name is {0},my sex is {1},my friend is {0}'
print(msg.format('jenny', 18)) # my name is jenny,my sex is 18,my friend is jenny
# 第三种用法 大括号内写上变量名,可以打破顺序,且可以重复使用相同变量名的值
msg = 'my name is {name},my sex is {sex},my friend is {name}'
print(msg.format(name='jenny', sex='女')) # my name is jenny,my sex is 女,my friend is jenny
1.5 字符串拼接
# 1.5 字符串拼接
# 方法一 字符串相加,但是先后顺序不能错
msg1 = 'I Miss'
msg2 = ' You'
print(msg1+msg2) # I Miss You
msg = msg1+msg2
print(msg) # I Miss You
msg = msg1 + msg2
print(msg) # YouI Miss
# 方法二 字符串内置方法join,引号里可以指定拼接的字符
msg_list = ['I', 'Miss', 'You']
print(' '.join(msg_list)) # I Miss You
new_list = ['jenny', 18, 'play']
print(''.join(new_list)) # 报错
"""拼接的对象必须是字符串类型 (在python不同数据类型之间无法直接操作)"""
![image]()
1.6 替换字符串中指定的字符
# 1.6 替换字符串中指定的字符
# 定义方式:replace(要被替换的字符,替换后的字符,替换个数)替换个数不写默认全部替换
name = 'my name is jenny ,my age is 28'
print(name.replace('jenny', 'john')) # my name is john ,my age is 28
name = 'my name is jenny,jenny,jenny'
# 替换指定个数
print(name.replace('jenny', 'john')) # my name is john,john,john
print(name.replace('jenny', 'john', 1)) # my name is john,jenny,jenny
1.7 判断字符串中是否是纯数字
# 1.7 判断字符串中是否是纯数字
name = 'jenny123'
name1 = '123'
print(name.isdigit()) # 返回False
print(name1.isdigit()) # 返回True
# 练习
guess_age = input('你的猜测是>>>:').strip()
if guess_age.isdigit():
guess_age = int(guess_age)
else:
print('你的猜测只能是纯数字,请重新输入')
1.8 字体格式内置方法
# 1.8 字体格式内置方法
name = 'my name is jenny,my sex is female'
# 所有单词首字母大写
print(name.title()) # My Name Is Jenny,My Sex Is Female
# 开头的单词首字母大写
print(name.capitalize()) # My name is jenny,my sex is female
# 大写变小写,小写变大写
name1 = 'MY name IS jenny'
print(name1.swapcase()) # my NAME is JENNY
1.9 查找指定字符的位置
# 1.9 查找指定字符的位置,返回对应字符的起始字符的索引值,从左往右开始找,找到一个就结束
name = 'my friend is jenny'
print(name.find('n')) # 7
print(name.find('enn')) # 14
print(name.find('o')) # 找不到返回-1
print(name.index('o')) # 找不到报错
1.10 统计某个字符出现的次数
name = 'my friend is jenny'
print(name.count('n')) # 3
1.11 字符串对齐方法
# 1.11字符串对齐方法
name = 'jason'
# 字符串居中显示,不够的用特殊符号填充
print(name.center(11, '-')) # ---jason---
# # 字符左对齐显示,不够的用特殊符号填充
print(name.ljust(11, '-')) # jason------
# # 字符右对齐显示,不够的用特殊符号填充
print(name.rjust(11, '-')) # ------jason
1.12 字符串判断字母或数字
# 1.12字符串判断字母或数字
# 字符串中既可以包含字母或数字,也可以两者都有,但是不能有特殊字符
print(name.isalnum()) # 返回True
# 字符串中只包含字母
print(name.isalpha()) # 返回False
2.数据类型之列表的内置方法
2.1 数据类型转换
# 2.1 数据类型转换
# 列表内一般都会存储相同数据类型的数据
# 类型转换 数据类型关键字(需要转换的数据)
print(list(123)) # 报错
print(list(123.21)) # 报错
print(list('hello')) # ['h', 'e', 'l', 'l', 'o']
print(list({'username': 'jason', 'pwd': 123})) # ['username', 'pwd']
print(list((11, 22, 33))) # [11, 22, 33]
print(list({11, 22, 33})) # [33, 11, 22]
'''list关键字可以将支持for循环的数据类型转换成列表'''
2.2 列表数据的修改,添加
# 2.2 列表数据的修改,添加
# 修改列表里的值
name_list = ['jenny', 'john', 'tony', 'jane']
name_list[0] = '666'
print(name_list) # ['666', 'john', 'tony', 'jane']
# 往列表里添加值
# 方法一:在列表尾部追加元素之append(),将括号里的内容当成是一个整体追加到列表尾部
name_list.append('why')
print(name_list) # ['jenny', 'john', 'tony', 'jane', 'why']
name_list1 = ['jenny', 'john', 'tony', 'jane', 'why']
name_list1.append([1, 2, 3, 4])
print(name_list1) # ['jenny', 'john', 'tony', 'jane', 'why', [1, 2, 3, 4]]
# 方法二:在指定索引位置插入元素之insert(索引值,插入的元素(元素当成一个整体看))
name_list1.insert(2, [1, 2, 3, 4])
print(name_list1) # ['jenny', 'john', [1, 2, 3, 4], 'tony', 'jane', 'why']
# 方法三:扩展元素之extend(类似于for循环+append操作)
name_list1.extend([1, 2, 3, 4])
print(name_list1) # ['jenny', 'john', 'tony', 'jane', 'why', 1, 2, 3, 4]
2.3 列表数据的查找和删除
# 2.3 列表数据的查找和删除
# 查找列表里某个值并返回对应的索引值
print(name_list1.index('john')) # 找到了返回对应元素的索引值 1
print(name_list1.index('0')) # 找不到直接报错
# 删除列表里的值
# 方法一:通用删除del
# 删除指定索引的值
msg_list = ['jane', 'john', 'jenny']
del msg_list[0]
print(msg_list) # ['john', 'jenny']
# 删除列表
del msg_list
print(msg_list) # 列表被删除,不存在
# 方法二:移除指定元素之remove(要移除的值)
msg_list.remove('jane')
print(msg_list) # ['john', 'jenny']
print(msg_list.remove('jane')) # 返回None
# 方法三:弹出指定索引对应的元素之pop(),括号内不写索引值默认从最后一个元素开始弹出
msg_list.pop(0)
print(msg_list) # ['john', 'jenny']
msg_list.pop()
print(msg_list) # ['jane', 'john']
print(msg_list.pop()) # john
3. 可变类型与不可变类型
# 3.可变类型与不可变类型
# 字符串示例
s5 = 'my name is jason my age is 18'
print(s5.title()) # 打印出来的是操作之后的结果 # My Name Is Jason My Age Is 18
print(s5) # my name is jason my age is 18
print(id(s5)) # 2250396500096
print(id(s5.title())) # 2250400732224
# 列表示例
name_list = ['jason', 'kevin', 'tony', 'jack']
print(id(name_list)) # 2226294772232
print(name_list.remove('jason')) # 打印出来的是None,但是remove操作还是执行了
print(name_list) # ['kevin', 'tony', 'jack']
print(id(name_list)) # 2226294772232
# 可变类型与不可变类型
"""
可变类型 >>> 列表
值改变 内存地址不变 修改的是原值
不可变类型 >>> 整型 浮点型 字符串
值改变 内存地址肯定变 其实是产生了新值
"""
name_list = ['jason', 'kevin', 'tony', 'jack']
print(id(name_list)) # 2240945345032
name_list.append(123)
print(id(name_list)) # 2240945345032
![image]()