目录
一、基础知识
1、表示: 单引号 双引号 三引号
2、下标
my_str='hello'
# 变量[下标]
print(my_str[0])
# len() 字符串长度
print(len(my_str))
# 获取最后一个元素
print(my_str[-1])
print(my_str[len(my_str)-1])
3、切片 变量[start:end:step]
# 获得到新字符串
# 不包含end对应下标
# step默认为1,可以不写
print(my_str[2:4:1])
# end不写,表示len(),可以取到最后一个元素
print(my_str[2:])
# start不写,表示0
print(my_str[:3])
# :不能一个都不写
print(my_str[:])
# 步长可以是负数
print(my_str[3:1:-1])
# 逆置
print(my_str[::-1])
# 其他
print(my_str[-4:-1])
print(my_str[::2])
4、字符串查找相关操作
my_str='hello world itcast and itcastcop'
# find() 查找是否存在某个字符串 返回下标 没找到返回-1
# find(要查找的内容,开始位置,结束位置)
print(my_str.find('hello'))
print(my_str.find('hello',3)) # 没找到返回-1
print(my_str.find('itcast'))
print(my_str.find('itcast',15))
# rfind() 从右边开始查找 返回正下标
print(my_str.rfind('itcast'))
# index() 查找是否存在某个字符串 返回下标 没找到报错
print(my_str.index('hello'))
# print(my_str.index('hello',5)) 没有找到报错
# rindex() 从右边开始查找
# count() 统计出现次数
print(my_str.count('aaa'))
print(my_str.count('hello'))
print(my_str.count('itcast'))
print(my_str.count('itcast',20))
4、字符串替换、切割、拼接
# 字符串替换
# replace(old_str,new_str,count)
# count 替换次数 默认全部替换
# 返回: 得到一个新字符串,不改变原来字符串
print(my_str.replace('itcast','itheima'))
print(my_str.replace('itcast','itheima',1))
# 字符串切割
# split(sub_str,count) 将原字符串按照指定的字符串切割,count表示切割次数
# sub_str 默认空格
# 返回一个列表 不包含切割的字符
# partition() 包含切割的字符
print(my_str.partition('itcast'))
print(my_str.split())
print(my_str.split('itcast'))
print(my_str.split('itcast',1))
# rsplit() 从右边切割
# 字符串拼接
# join(可迭代对象) 不改变原字符串
# 可迭代对象 字符串,列表(字符串类型)
# 将字符串添加到可迭代对象的两个元素之间
print('**'.join('hello'))
my_list=['hello','ly','adfs']
print('*_*'.join(my_list))
5、其他方法
my_str.capitalize() # 字符串首字符大写
my_str.title() # 字符串所有首字符大写
my_str.upper() # 字符串全部大写
my_str.lower() # 字符串全部小写
my_str.islower() # 字符串是否小写
my_str.startswith('hello') # 是否以..开头
my_str.endswith('aa') # 是否以..结尾
my_str.center(30) #在某段长度居中
my_str.ljust(30) #左对齐
my_str.rjust(30) #右对齐
my_str.lstrip() #去除左边空格
my_str.rstrip() #去右边空格
my_str.strip() #去除两边空格
my_str.isspace() #判断是否有空格
my_str.isalnum() #是否字母或数字
my_str.isdigit() #否纯数字
二、训练
题目1 [加强训练]
题干
如果需要使用变量保存以下字符串,我们该如何书写代码
鲁迅说:"我没有说过这句话"
训练目标
让学员知道含有字符串嵌套的方式
训练提示
在python中,有两种表现形式都可以定义为字符串类型,是哪两种方式,是否可以混合使用呢
参考方案
使用 " " 和 ' ' 都可以对字符串进行定义
操作步骤
- 想要在在一个字符串中包含
双引号""
, 字符串可以使用单引号定义 - 想要在在一个字符串中包含
单引号''
, 字符串可以使用双引号定义
参考答案
# 在python中,''可以嵌套在""中,用以表示字符串中的字符串
words = "鲁迅说:'我没有说过这句话'"
print(words)
# 还可以使用三引号
words = """鲁迅说:'我没有说过这句话'"""
print(words)
题目2 [加强训练]
题干
做一个简单的用户信息管理系统: 提示用户依次输入姓名,年龄和爱好 并且在输入完成之后,一次性将用户输入的数据展示出来
训练目标
字符串的声明 字符串的输入 字符串的输出
训练提示
- 在python中,通过 "" 或者 '' 声明一个字符串类型的变量
- 使用input()函数从键盘获取数据
- 通过%s 的格式化操作符来输出字符串类型
参考方案
- 通过input函数进行字符串数据的录入
- 使用 string 类型保存录入的数据
- 使用 %s 格式化输出保存的数据
操作步骤
- 通过input函数进行字符串数据的录入
- 使用 string 类型保存录入的数据
- 使用 %s 格式化输出保存的数据
参考答案
# 录入数据,并保存在变量中
name = input("请输入姓名:")
age = input("请输入年龄:")
hobby = input("请输入您的爱好:")
# 格式化输出数据
print("您的姓名是%s, 您的年龄是%s, 您的爱好是%s" % (name, age, hobby))
# 使用 f-string
print(f"您的姓名是{name}, 您的年龄是{age}, 您的爱好是{hobby}")
题目3 [加强训练]
题干
现有字符串如下,请使用切片提取出ceg words = "abcdefghi"
训练目标
字符串的切片使用
训练提示
1, 切片的语法:[起始:结束:步长] 2, 选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身), 3, 步长表示选取间隔,默认步长是正值,即从左到右选取,如果步长为负值,则从右向左选取
参考方案
1,使用切片进行截取,起始位置是-7,结束位置是-1 2,反向选取,步长为2
操作步骤
- 起始位置为-7,结束位置是-1,步长为2
参考答案
a = "abcdefghi"
b = a[-7:-1:2]
print(b)
题目4 [加强训练]
题干
james有一个关于爬虫的项目,他需要在一个字符串中查找python这个关键字, 当前他通过index()函数进行查找,虽然可以实现查找的需求,但是总会在 没有查找到关键字的时候报错,为什么会报错,如何优化?
训练目标
- 理解find函数和index函数的区别
训练提示
- find函数如果查找到则返回索引值,如果查不到,则返回-1
- index函数如果查找到则返回索引值,如果查不到,则报错
参考方案
- 通过使用find函数的方式替换掉index
操作步骤
- 通过使用find函数的方式替换掉index
参考答案
只需要使用find函数替换掉index函数即可,在功能上, find函数index函数完全一致,不同的是index函数在没有查找到关键字的情况下会报ValueError的异常,因此在一般开发环境下通常都会使用find函数
题目5 [加强训练]
题干
1,判断单词great是否在字符串words中,如果在,则将每一个great后面加一个s, 如果不在则输出 great不在该字符串中 2,将整个字符串的每一个单词都变成小写,并使每一个单词的首字母变成大写 3,去除首尾的空白,并输出处理过后的字符串
words = " great craTes Create great craters, But great craters Create great craters "
训练目标
- 字符串的相关操作
训练提示
- 字符串的相关操作来解决上述问题
- 使用判断语句来判断语句成立的条件
参考方案
- 使用in判断某一个子字符串是否在母字符串中
- 使用replace函数替换子字符串
- 使用lower函数将字符串变为小写
- 使用title函数将单词的首字母大写
- 使用strip函数去除字符串首尾的空白
操作步骤
- 使用in判断某一个子字符串是否在母字符串中
- 使用replace函数替换子字符串
- 使用lower函数将字符串变为小写
- 使用title函数将单词的首字母大写
- 使用strip函数去除字符串首尾的空白
参考答案
words = " great craTes Create great craters, But great craters Create great craters "
# 判断单词great是否在这个字符串中
if 'great' in words:
# 将每一个great替换成greats
words = words.replace("great", "greats")
# 将单词变成小写
words = words.lower()
# 将每一个单词的首字母都大写
words = words.title()
# 去除首尾的空白
words = words.strip()
# 最后进行输出
print(words)
else:
print("great不在该字符串中")