1、字符串的操作
字符串的拼接
str: str="今天周一" + "今天天气不错"
str1: str = "今天是%d号,今天天气%s"%(1, "不错")
str2: str = "今天是{n}号,今天天气{s}".format(n=1, s="不错")
字符串的截取
str: str ='博客园是一个面向开发者的知识分享社区,创立于2004年1月。'
# 获取索引为10的字符
print(str[10])
# 获取开头到第10个字, 这个也是含前不含后
print(str[0:10])
# 获取索引为10以后的字符
print(str[10:])
# 取最后一个字符
print(str[-1])
# 取最后三个字符
print(str[-3:])
# 获取倒数第3到倒数第1的字符
print(str[-3:-1])
# 对文本进行倒序, 在倒序的过程中,注意最后-1是表示步长为负数
print(str[::-1])
'''
str[0:3:-1]
这个取不到数,相当于从右往左进行数,
正常是小的数字在前面,大的在后面,
如果步长为负数,则需要大的在前面,小的在后面 如 str[3:0:-1] 就最到了是园客,第一位取不到
如果需要取到第一位就需要 str[2::-1], 即拿到倒序后的博的位置,然后从右边往左包含,即数值按正常的走,只是方向相反
'''
print(str[2::-1])
字符串的查找
find(): 检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则返回-1。
rfind(): 和find()的功能相同,但查找的方向为右侧开始
index(): 检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则报异常。
rindex(): 和index()的功能相同,但查找的方向为右侧开始
count(): 返回某个子串在字符串中出现的次数
str = "博客园是一个面向开发者的知识分享社区,创立于2004年1月。这是服务于开发者的网站"
# 使用find进行查找
print(str.find('开发者')) #在子串中查找开发者这个子串
print(str.find('开发者', 10)) # 表示从10的位置开始查找
print(str.find('开发者', 10, 100)) # 第二个参数与第三个参数表示开始的位置和结束的位置
# 使用index进行查找
print(str.index('开发者')) # 在子串中查找开发者这个子串,如果查找不到将会报错
print(str.index('开发者', 10)) # 表示从10的位置开始查找
print(str.index('开发者', 10, 100)) # 第二个参数与第三个参数表示开始的位置和结束的位置
# 使用count进行数据统计
print(str.count('开发者')) # 统计‘开发者’出现的次数
print(str.count('开发者', 10)) # 从指定位置开始统计‘开发者’
print(str.count('开发者', 10, 100)) # 从指定位置开始统计‘开发者’
字符串的修改
字符串.replace('旧字符串',’新字符串‘, num): 字符串替换,num表示替换的个数
字符串.split('连接字符串', num):字符串以指定连接符分割成列表, num表示分割的个数
连接符号.join(list): 把list列表用指定的连接字符串进行连接
str = "博客园是一个面向开发者的知识分享社区,创立于2004年1月。这是服务于开发者的网站"
print(str.replace('开发者', '码农', 1)) # 1表示只替换一次
print(str.split('开发者')) # 表示进行全部分割
print(str.split('开发者', 1)) # 1表示只分割一次,后面的保留
list = ['你', '今天', '开心么?']
print('---'.join(list,))
capitalize(): 将字符串第一个字符转换成大写
title(): 将字符串的每个单词转换成大写
lower(): 将字符串中的所有词转成小写
upper(): 将字符串中所有的词转成大写
str = "TOday IS gooD dAY"
# 会把str句子的首字母转成大写,其他的转成小写
print(str.capitalize())
# 把每个单词的首字母转成大写,其他的转成小写
print(str.title())
# 把所有的字符转成大写
print(str.upper())
# 把所有的字符转成小写
print(str.lower())
lstrip(): 删除字符串左侧空白字符
rstrip(): 删除字符串右侧的空白字符
strip(): 删除字符串两侧的空白字符
ljust(length, 填充字符):让字符串左对齐, 填充字符默认是空格
rjust(length, 填充字符):让字符串右对齐, 填充字符默认是空格
center(length, 填充字符):让字符串居中对齐, 填充字符默认是空格
str = " this is text "
print(str.lstrip()) # 会把左边的空格删除
print(str.rstrip()) # 右侧的空格删除
print(str.strip()) # 左右的空格全部删除
str1 = 'this is test'
print(str1.ljust(20, '.')) # 输出 this is test........
print(str1.rjust(20, '.')) # 输出 ........this is test
print(str1.center(20, '.')) # 输出 ....this is test....
startswith(子串,开始位置下标,结束位置下标)
endswith(子串,开始位置下标,结束位置下标)
str="first: this is first, end"
# str是以first开头
print(str.startswith('first'))
# str.index('this')返回7, startswith第二个参数表示开始的位置
print(str.startswith('this', str.index('this')))
# str以end结尾
print(str.endswith('end'))
isalpha(): 字符串至少有一个字符,且所有的字符都是字母则返回True, 否则返回False
isdigit(): 字符串只包含数字则返回True,否则返回False
isalnum(): 字符串至少有一个字符,且所有的字符都是由字母与数字组成的则返回True, 否则返回False
isspace(): 字符串只包含空白则返回True, 否则返回False
print('test'.isalpha()) # 返回True
print('test1'.isalpha()) # 返回False
print('12'.isdigit()) # 返回True
print('12 '.isdigit()) # 有一个空格则返回False
print('test2'.isalnum()) #返回True
print(''.isspace()) # 空字符串返回False
print(' '.isspace()) # 返回True
2、列表的操作
index(): 返回指定数据所在位置的下标
count(): 统计指定数据在当前列表中出现的次数
list = ['first', 'second', 'third', 'fourth', 'fifth', 'second']
print(list.index('third')) # 如果不存在则报错
print(list.count('second')) # 如果没有出现,则返回0
len(): 访问列表的长度,即列表中数据的个数
in: 用于判断指定数据是在list列表中
not in: 用于判断指定的数据不存在列表中
list = ['first', 'second', 'third', 'fourth', 'fifth', 'second']
print(len(list)) # 通用的获取长度方法
print(len('this is text')) # 也可以用于获取文本的长度
print('first' in list) # 返回True
print('abc' in list) # 返回False
print('first' in 'this is first') # 也可以用于判断文本 # 返回Ture
print('abc' in 'this is test') # 返回False
print('abc' not in list) # 返回True
print('first' not in list) # 返回False
print('first' not in 'this is first') # 返回False
print('abc' not in 'this is test') # 返回True
注意: 以上len, in, not in三种方法是通用的常规方法
列表数据的增删改查
append(): 在表列的末尾追加数据
extend(): 在列表的末尾追加数据,如果列表是一个列表,则把列表的数据逐一添加于列表中
insert(): 在列表的指定位置添加数据
list = ['second']
print(list.append('third')) # append方法没有返回值,返回None
print(list) # 列表变成 ['second', 'third']
print(list.extend('fourth')) # extend方法也没有返回值, 返回None
print(list) # 列表变成 ['second', 'third', 'f', 'o', 'u', 'r', 't', 'h']
list.extend(['fourth', 'fifth'])
print(list) # 列表变成 ['second', 'third', 'f', 'o', 'u', 'r', 't', 'h', 'fourth', 'fifth']
list.insert(0, 'first')
print(list) # 列表变成 ['first', 'second', 'third', 'f', 'o', 'u', 'r', 't', 'h', 'fourth', 'fifth']
列表的删除数据
del 目标
pop(): 删除指定下标的数据(默认为最后一个), 并返回数据
remove(): 移除列表中某个数据的第一个匹配项
clear(): 清空列表
ls = ['first', 'second', 'third', 'fourth', 'fifth']
# del ls # 表示删除整个列表
# print(ls)
del ls[4] # 删除最后一项
print(ls) # ['first', 'second', 'third', 'fourth']
print(ls.pop(1)) # 删除指定项第一项
print(ls) # ['first', 'third', 'fourth']
print(ls.remove('third')) # 没有返回值
print(ls) # ['first', 'fourth']
print(ls.clear()) # 没有返回值
print(ls) # []
列表数据的修改
通过下标的方式进行修改
reverse(): 对列表进行倒序排列
sort(key=None, reverse=false): 对列表进行排列 key表示列表中有字典,需要按字典中的某个key值进行排序
copy(): 对原列表进行拷贝操作
ls = [8, 4, 5, 3, 2, 1, 6, 7]
new_ls = ls.copy() # 对原数据进行复制
ls.reverse()
print(ls) # [7, 6, 1, 2, 3, 5, 4, 8]
ls.sort(reverse=True)
print(ls) # [8, 7, 6, 5, 4, 3, 2, 1]
ls.sort(reverse=False)
ls.sort() # 默认 reverse=False
print(ls) # [1, 2, 3, 4, 5, 6, 7, 8]
print(new_ls) # [8, 4, 5, 3, 2, 1, 6, 7]
列表的循环遍历
list = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth']
# 方式一,通过while循环
i = 0
while (i < len(list)):
print(list[i])
i += 1
# 方式二,通过for循环
for per in list:
print(per)
# 方式三,通过range
for per in range(0, len(list), 1):
print(per, list[per])
# 方式四: 通过enumerate函数
for index, per in enumerate(list):
print(index, per)
3、元组的操作
一个元组可以存储多个数据, 元组内的数据是不能更改的
元组的定义
tp = ('first', 'second') # 如果只定义只有一项的元组 tp1 = ('first',) tp2 = ('first') # 这种写法则是字符串 print(type(tp)) # <class 'tuple'> print(type(tp1)) # <class 'tuple'> print(type(tp2)) # <class 'str'>
元组的常规操作
index(): 查找指定的数据,与list的index一样,如果不存在则报错
count(): 统计指定的字符在元组中出现的次数
len(): 返回元组的长度
tp = ('first', 'second')
print('first' in tp) # True
print(tp.index('second')) # 1
print(tp.count('first')) # 1
print(len(tp)) # 2
注意:原则元组里的项是不能更改的,如果是字符串,数值,或者布尔类型的数据更改,那么会直接报错,但是如果是list类型的数据,那么是可以更改的,所以在开发的过程中,需要开发人员自觉