字符串
去空格
s = '\n a bc \n'
print(s.strip()) # 去掉字符串两边的空格和换行符
print(s.rstrip())# 只去掉右边的空格和换行符
print(s.lstrip()) # 只去掉左边的空格和换行符
替换
print(s.replace('a','A')) # 替换,将字符串中含有a的字符都替换为A
print(s.replace(' ','')) # 去中间空格,该方法可以替换中间的空格,将空格替换为空
找下标
# 两种写法,推荐使用第二种
print(s1.index('o')) # 如果下标不存在,报错ValueError: substring not found。不推荐使用
print(s1.find('5')) # 如果下标不存在,返回-1。推荐使用
判断开头结尾
# 检查字符串是否以指定前缀开头
print(s1.startswith('q')) # 判断开头
# 检查字符串是否以指定后缀结尾
print(s1.endswith('.jpg')) # 判断结尾
统计次数和长度
print(s1.count('c'))# 找某个字符出现的次数
print(len(s1)) # 统计字符串的长度
设置等长/前面补0
print(s1.center(50,'*'))# 设置等长为50,若不足50用指定字符在两边填充
print(s4.zfill(5))# 前面补0,这里设置的5为补0后的总长度(该方法仅支持字符串类型)
大小写转换
print(s1.upper())# 把所有的字母都变成大写
print(s1.lower())# 把所有的字母都变成小写
print(s1.capitalize())# 把首字符变为大写
print(s1.title()) # 把每个单词的首字母变为大写
判断字符串类型
s2 = 'A!TD22. 3'
s3 = 'ss22单独'
s4 = '123'
#判断字符格式
print(s2.isupper())# 出现的字母,是不是都是大写字母
print(s2.islower())# 出现的字母,是不是都是小写字母
print(s3.isalpha())# 是字母或汉字,返回True
print(s3.isalnum())# 只有数字或者字母或汉字会返回True,其他的都返回False
print(s3.isascii())# 检查字符串是否仅包含 ASCII 字符集中的字符
# 判断是否是数字
s = "⅔12345²"
print(s.isdecimal()) # 检查字符串是否只包含十进制数字字符(0 到 9)
print(s.isdigit()) # 检查字符串是否只包含数字字符,包括除十进制数字外的其他数字形式,如上标、下标等
print(s.isnumeric()) # 它是最宽泛的数字检查方法,它不仅包括数字字符,还包括其他数字形式,如分数、上标、下标等。
分割/连接字符串
# 将字符串按照指定分隔符分割成子字符串,并返回一个列表
stus = 'xiaoming,xiaohei,xiaobai,xiaojun'
print(stus.split(',')) # 并不一定要用逗号,自己指定什么都可以(要和上边用的符号一样),默认什么都不写的话就用空格分割
print(type(stus)) # <class 'str'>
# 将可迭代对象中的字符串连接起来,使用当前字符串作为连接符
l = ['xiaoming', 'xiaohei', 'xiaobai', 'xiaojun']
print(','.join(l)) # 把list里面的每一个元素通过指定的字符串(逗号或空格或点等符号都可以)连接起来
print(type(l)) # <class 'list'>
字符串格式化
# format方法和format_map方法是做字符串格式化的,用{}占位,区别在于format_map方法传的是字典格式。同%s,两种都是做字符串格式化,用哪个都可以,数据多的时候推荐用该方法
s5 = '今天是{},欢迎{}登录'
print(s5.format('2020-04-08','xiyang'))
# 举例
s6 = 'insert into stu(id,name,email,phone,addr) value({id},{name},{email},{phone},{addr})'
# .format{}方法,直接在可变的值中定义好名字,传值时不需要按顺序传值,也可以正确插入
print(s6.format(phone = '17611111111',name = 'xiyang',id = 1,email = '133@qq.com',addr = '北京市'))
# .format_map
print(s6.format_map({'phone':'17611111111','name':'xiyang','id':1,'email':'133@qq.com','addr':'北京市'}))
# 演示三种写法(%s、format、format_map)的区别
s6 = 'insert into stu(id,name,email,phone,addr) value({id},{name},{email},{phone},{addr})'
id = input('请输入id:')
name = input('请输入name:')
phone = input('请输入phone:')
addr = input('请输入addr:')
email = input('请输入email:')
# %s方式
print('insert into stu(id,name,email,phone,addr) value(%s,%s,%s,%s,%s)' % (phone,id,addr,name,email))
# format方式
print(s6.format(phone=phone,addr=addr,id=id,name=name,email=email))
# format_map方式
print(s6.format_map({'phone':phone,'name':name,'id':id,'email':email,'addr':addr}))
# 结论:%s的方式,当数据多时,如果顺序传混了,那么存值也就存混了,如id在前方,我传了phone在前方,系统就会把我输入的phone的值,放到id中
列表
添加元素的三种方式
# 在列表末尾添加一个元素
l.append('china')
# 指定未知添加一个元素,如果指定的位置不存在,会在末尾添加
l.insert(99,'23')
# 将可迭代对象中的元素逐一添加到列表中,如列表 字符串 元组 集合 文件对象 生成器 迭代器等
l = ['猕猴桃', '哈密瓜', '榴莲', '山竹','杨桃']
l2 = ['樱桃','梨']
l.extend(l2) # 列表
l.extend(['苹果']) # 列表
l.extend('橘子') # 字符串
l.extend(('桃子','牛奶')) # 元组
l.extend({'可口可乐':'红色','雪碧':'绿色'}) # 字典
print(l) # ['猕猴桃', '哈密瓜', '榴莲', '山竹', '杨桃', '樱桃', '梨', '苹果', '橘', '子', '桃子', '牛奶', '可口可乐', '雪碧']
获取元素
list = [123,1.56,'python','java','!@#']
# 通过索引获取单个元素
print(list) # 输出完整的列表,即[123, 1.56, 'python','java','!@#']
print(list[0]) # 输出第一个元素,即123
print(list[-1]) # 输出倒数第一个元素
# 通过切片获取多个元素--前包后不包
print(list[1:4]) # 输出从第二个元素开始,到第四个元素,即[1.56, 'python', 'java']
print(list[2:]) # 输出从第三个元素(第二个下标)开始的所有元素,即['python','java','!@#']
print(list[:-3]) # 输出倒数第三个元素之前的所有元素,即[123, 1.56]
print(list * 2) # 输出两次列表,即[123, 1.56, 'python','java','!@#', 123, 1.56, 'python','java','!@#']
# 通过步长取值
print(list[::3]) # 输出列表中的所有元素,每间隔3个步长取一个
获取元素出现的次数/个数/索引
l = ['23','abc','DEF','哈喽','!@#','2.3','DEF']
# 返回元素在列表中出现的次数
print(l.count('23'))
# 返回列表中元素的个数
print(len(l))
# 返回列表中传入元素的索引,没有则报错,有多个则返回第一个位置的索引
print(l.index('DEF'))
修改元素
# 修改单个元素
my_list = [1, 2, 3, 4, 5,6,7,8,9,10]
my_list[1] = 'hello'
print(my_list)
# 修改多个元素(替换多个元素)
my_list[5:7] = [20, 30]
print(my_list)
# 将索引为3及之后的元素替换为40, 50, 60
my_list[3:] = [40, 50, 60]
print(my_list)
排序的三种方式
# 将列表中的元素反转
l.reverse()
# 对列表中的数据正序排列(不会返回新的列表)
l.sort()
# 对列表中的数据倒序排列
l.sort(reverse=True)
删除元素的三种方式
l = ['23','abc','DEF','哈喽','!@#','2.3','DEF']
# 移除列表中第一个值为x的元素,如果没有则会报错
l.remove('DEF')
print(l)
# 移除指定索引的元素,并返回被移除的元素;如果传入不存在的索引则报错;如果未传入索引,则移除列表中最后一个元素
print(l.pop(0))
print(l.pop())
print(l)
# 删除索引为1的元素,如果传入不存在的索引则报错
del l[1]
# 删除整个列表
del l
元组
在Python中,元组是不可变的序列,意味着一旦创建就不能修改。因此,元组没有像列表那样丰富的方法,但仍然有一些常用的方法可以操作元组
# 元组(tuple)--也是一个list,跟list的区别是它不能修改。中括号是list,小括号是元组
t = ('192.168.0.114','root','123456',3306) # 一些不想让别人修改的数据,就定义为元组,例如数据库的ip、端口、用户、密码
# 定义两个元组
t1 = (1,2,3)
t2 = (4,5,6)
# 获取元素
print(t2[2])
print(t2[:2])
# 元组拼接
new_t = t1 + t2
print(new_t)
# 元组解包
a,b,c = t1
print(a,b,c)
# 元素出现的次数/元素第一次出现的索引
print(t2.count(5))
print(t2.index(6))
字典
字典是一种无序的数据结构,用于存储键-值对。字典提供了许多方法来操作和处理键值对数据。以下是一些常用的字典方法:
创建
# 创建字典的两种方式
my_dict = {'a': 1, 'b': 2, 'c': 3}
another_dict = dict([('x', 10), ('y', 20), ('z', 30)])
获取
# 访问元素--通过键来访问字典中的值
print(my_dict['a'],another_dict['y'])
# 获取键、值和键值对
print(my_dict.keys())
print(my_dict.values())
print(my_dict.items())
# 获取指定键的值,如果键不存在返回默认值
print(my_dict.get('dd',44))
# 复制字典
my_dict.copy()
新增/更新
# 定义一个字典
my_dict = {'a': 5, 'b': 2, 'c': 3, 'd': 4, 'x': 10, 'y': 20, 'z': 30}
# 添加或更新元素(键不存在则添加,键存在则更新)
my_dict['a'] = 1
my_dict['e'] = 5
print(my_dict)
# 添加或更新元素(键不存在则添加,键存在则不做修改)
my_dict.setdefault('a',11)
my_dict.setdefault('f',6)
print(my_dict)
# 将另一个字典中的键值对添加到my_dict中
my_dict.update(another_dict)
print(my_dict)
删除
my_dict = {'a': 5, 'b': 2, 'c': 3, 'd': 4, 'x': 10, 'y': 20, 'z': 30}
print(my_dict.pop('a')) # 删除指定键的键值对,并返回对应的值。
print(my_dict.popitem()) # 随机删除并返回一个键值对。
del my_dict['b'] # 删除指定键的键值对。
print(my_dict)
my_dict.clear() # 清空字典中的所有元素。
print(my_dict)
集合
在Python中,集合是一种无序且不重复的数据集合。集合提供了许多方法来进行交集、并集、差集等操作。以下是一些常用的集合方法:
创建
# 创建集合的两种方法
my_set = {1, 2, 3} # 使用{}直接创建
another_set = set([4, 5, 6]) # 使用set函数创建
print(my_set,another_set)
新增
# 添加元素的两种方法
my_set.add(7) # 添加一个元素到集合
my_set.update(another_set) # 添加多个元素到集合
c = my_set.copy() #复制集合
print(my_set)
print(c)
删除
# 删除元素的几种方法
# print(my_set.remove(8)) # 删除集合中指定的元素,如果元素不存在则会引发 KeyError。
print(my_set.discard(8)) # 删除集合中指定的元素,如果元素不存在也不会引发错误。
print(my_set.pop()) # 随机删除并返回一个元素。
print(my_set.clear()) # 清空集合中的所有元素。
获取交集、并集、差集、对称差集
# 交集:取多个集合里边都有的
# 并集:把多个集合合并到一起,在去重
# 差集:取出在a集合里边有,在b集合里边没有的
# 对称差集:把多个集合中都有的元素删除,在取出
xn = ['wanxiyu','zhaowenjia','dulinxia','cihalong']
zdh = ['wanxiyu','zhaowenjia','hanmin','cihalong']
xn_set = set(xn)
zdh_set = set(zdh)
# 取交集两种写法
print(xn_set.intersection(zdh_set))# 写法一
print(xn_set & zdh_set) # 写法二
# 取并集两种写法
print(xn_set.union(zdh_set)) # 写法一
print(xn_set | zdh_set)# 写法二
# 取差集两种写法
print(xn_set.difference(zdh_set)) # 写法一
print(xn_set - zdh_set)# 写法二
# 取对称差集两种写法
print(xn_set.symmetric_difference(zdh_set)) # 写法一
print(xn_set ^ zdh_set)# 写法二
判断子集/超集/交集
set1 = {1, 2, 3}
set2 = {1, 2, 3,4}
# 判断一个集合是否是另一个集合的子集(一个集合的所有元素都包含在另一个集合中,那么这个集合被称为另一个集合的子集。即:集合1是集合2的子集)--两种写法
print(set1.issubset(set2))
print(set1 <= set2)
# 判断一个集合是否是另一个集合的超集(一个集合包含另一个集合的所有元素,那么这个集合被称为另一个集合的超集。即:集合2是集合1的超集)--两种写法
print(set2.issuperset(set1)) # 判断一个集合是否是另一个集合的超集。
print(set2 >= set1) # 判断两个集合是否没有交集。
# 判断两个集合是否没有交集
print(set1.isdisjoint(set2))