i t h e i m a
正数索引
0 1 2 3 4 5 6
负数索引
-7 -6 -5 -4 -3 -2 -1
‘’’
结论:字符串中的索引,正数索引从0开始,从左至右依次递增, 负数索引,从-1开始从右至左依次递减
需求:使用负数索引取 m
print(str1[-2])
print(str1[-4])
输入 input
user_name = input(‘请输入你的用户名’)
输出
print(f’您的用户名是{user_name}')
print(‘您输入的用户名是%s’ % user_name)
3、字符串切片
字符串切片就是讲字符串中的一部分数据按照指定规则进行分隔得到的新的字符串
字符串切片的格式
字符串[起始位置索引:终止位置索引:步长]
起始位置可以省略:
-
步长为正:起始位置默认为字符串开始
-
步长为负:起始位置默认为字符串结束
终止位置可以省略:
-
步长为正:终止位置默认为字符串结束
-
步长为负:终止位置默认为字符串开始
步长可以省略,省略后默认为1,并且可以省略冒号
复制字符串:str[:]
反转字符串:str[::-1]
注意:如果步长为正,则起始位置在终止位置左侧,如果步长为负,则起始位置在终止位置右侧
切片:就是按照一定的索引位置和步长将字符串分割出一部分就是切片
切片的格式:数据序列[起始位置索引:结束位置索引:步长] 字符串,列表,元组,都可以进行切片
str1 = ‘itheima’
需求:将the切片出来
字符串切片以及其他容器类型的切片操作,都会重新生成一个新的数据序列,不会对原有数据序列产生影响
str2 = str1[1:4:1]
print(str2)
切片逻辑
起始位置: 字符串切片的起点(包含)
结束位置:字符串切片的终点(不包含)
在开发中绝大多数范围区间是左闭右开区间,其余内容单独记忆(例如 randint是一个闭区间)
步长:步长就是每一次查找数据的间隔(相邻两个索引的差值就是步长)
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
str2 = ‘我爱北京天安门,天安门上太阳升!’
获取"北京天安门"
print(str2[2:7:1])
如果步长为1 可以被省略
步长省略后,:也可以省略
print(str2[2:7])
起始位置也可以省略
如果起始位置省略,步长为正数,则起始位置为字符串开始
print(str2[:7:1]) # 我爱北京天安门
如果起始位置省略,步长为负数,则起始位置为字符串末尾
print(str2[:7:-1]) # !升阳太上门安天
为什么为空? 字符串切片起点 是索引为2 的位置, 步长是-1 切片区间[2,7),此时从2的位置从右向左步长为1 切片此区域没有数据.
print(str2[2:7:-1]) # 空字符串
结论: 如果步长是负数,开始位置要在结束位置右侧,否则没有数据
结束位置可以省略
如果结束位置省略,步长为正数,则结束位置为字符串末尾
print(str2[8::1]) # 天安门上太阳升!
下方表达式和上一行是否含义相同? 不相同,因为结束位置写-1不包含结束位置
print(str2[8👎1]) # 天安门上太阳升
如果结束位置省略,步长为负数,则结束位置为字符串开始
print(str2[8::-1]) # 天,门安天京北爱我
如果结束位置写0 含义也不相同
print(str2[8:0:-1]) # 天,门安天京北爱我
需求:在字符串中截取"天门天门"
print(str2[4: 11: 2]) # 天门天门
在使用字符串切片进行非1步长书写时,要注意起始位置和结束位置,并且查看间隔
Python中优雅的字符串反转方式
print(str2[::-1]) # !升阳太上门安天,门安天京北爱我
python中复制数据序列的方法
str3 = str2[:]
print(str3) # 我爱北京天安门,天安门上太阳升!
4、字符串查询
-
index:查找字符串中子字符串所在位置i,如果有该字符串,查询其
==从左至右==
第一次出现的位置的正数索引,==否则报错==
。 -
find:查找字符串中子字符串所在位置i,如果有该字符串,查询其
==从左至右==
第一次出现的位置的正数索引,==否则返回-1==
。 -
rindex:查找字符串中子字符串所在位置i,如果有该字符串,查询其
==从右至左=
=第一次出现的位置的正数索引,==否则报错==
。 -
rfind:查找字符串中子字符串所在位置i,如果有该字符串,查询其
==从右至左==
第一次出现的位置的正数索引,==否则返回-1==
。 -
count:查询子字符串在指定字符串中出现的次数。
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
str1 = ‘hello python’
index
需求:查找p所在的索引位置
格式: 字符串.index(self(不用传值), sub(子字符串), start(起始位置), end(结束位置))
print(str1.index(‘p’)) # 6
如果字符串中含有多个子字符串,则会返回指定范围内的从左至右的第一个查找到的子字符串位置索引
print(str1.index(‘o’)) # 4
查询指定范围内的字符串,虽然指定了范围,但是计算索引是从左至右依次递增的
print(str1.index(‘o’, 5, 12)) # 10
ValueError: substring not found
结论:找不到对应的子字符串,则会报错,如果能够查找到数据返回当前子字符串的正数索引
指定查找范围是左闭右开区间
print(str1.index(‘o’, 5, 10)) # 10
print(str1.index(‘o’, 10, 12)) # 10
find
str1 = ‘hello python’
需求:查找p所在的索引位置
格式: 字符串.find(self(不用传值), sub(子字符串), start(起始位置), end(结束位置))
print(str1.find(‘p’)) # 6
如果字符串中含有多个子字符串,则会返回指定范围内的从左至右的第一个查找到的子字符串位置索引
print(str1.find(‘o’)) # 4
指定范围查找
需求:查找o 指定范围为 5,10 10,12
结论:使用find进行查询时,如果查询的子字符串不存在,则返回-1,如果存在则返回指定正数索引
find的查询范围是左闭右开区间
print(str1.find(‘o’, 5, 10))
print(str1.find(‘o’, 10, 12))
查询的子字符串可以是单个字符可以是多个字符
print(str1.find(‘python’)) # 6
rfind
和find使用方式完全相同,只是在查询时,从右至左查询,返回第一次查询到的字符索引,返回的依然是正数索引
print(str1.rfind(‘o’)) # 10
rindex
和index使用方式完全相同,只是在查询时,从右至左查询,返回第一次查询到的字符索引,返回的依然是正数索引
print(str1.rindex(‘o’))
结论:index 和 find 使用方法完全一致,只是,index 在查询不到子字符串时会报错,find会返回-1
count() 计数
使用count 可以返回当前子字符串在指定字符串中出现的次数
需求:查询o在str1 中出现的多少次
提示:在大多数编程语言中, 计数从1开始数, 索引或编号,从0开始编号
格式: 字符串.count(self(不用传值, x(要查询个数的子字符串), start(开始位置), end(结束位置)))
print(str1.count(‘o’))
需求,查询指定范围内h的个数 从1-9 9-12
结论:1.count查询的范围是一个左闭右开区间
2.如果没有查询到子字符串则返回0 不会报错
print(str1.count(‘h’, 1, 9)) # 0
print(str1.count(‘h’, 9, 12)) # 1
5、字符串替换
replace:将旧值替换指定字符串中的新值
replace
str1 = ‘hello python’
需求: 将o 替换为 $
格式: replace(self(不用传值), old(旧值), new(新值), count(替换次数))
print(str1.replace(‘o’, 'KaTeX parse error: Expected 'EOF', got '#' at position 6: ')) #̲ hell pyth$n
指定替换次数
如果不指定替换次数,默认将所有的制定字符全部替换
print(str1.replace(‘o’, 'KaTeX parse error: Expected 'EOF', got '#' at position 9: ', 1)) #̲ hell python
如果指定的替换次数大于出现的次数,则也是只替换出现的次数
print(str1.replace(‘o’, 'KaTeX parse error: Expected 'EOF', got '#' at position 10: ', 10)) #̲ hell python
6、字符串的拆分和合并
split:字符串按照指定分隔符进行拆分
-
拆分后得到的结果是有拆分后的字符串组成的一个列表
-
拆分后,所有的分隔符消失
join:将字符串序列(容器类型中所有元素均为字符串)按照指定分隔符进行合并
split 字符串拆分
str1 = ‘I love Python and java and c and lixiaolong’
需求: 将所有的单词按照空格为分隔符进行拆分,拆分为多个字符串
split 会按照指定分隔符进行拆分,拆分完成后 会将所有的拆分后的结果以字符串形式保存到列表中
split(self(不用传值), sep(分隔符), maxsplit(最大分割次数))
print(str1.split()) # [‘I’, ‘love’, ‘Python’, ‘and’, ‘java’, ‘and’, ‘c’, ‘and’, ‘lixiaolong’]
指定最大分割次数
可以把split看成一把刀,字符串看成一条线,砍一刀分成两份,砍两刀分成3分以此类推
print(str1.split(’ ', 3)) # [‘I’, ‘love’, ‘Python’, ‘and java and c and lixiaolong’]
需求:按照以’a’为分割符进行拆分,将str1 最大拆分次数60次
使用谁作为分隔符,则拆分后该分隔符消失,
最大拆分次数如果超过可以拆分的上限,则保持拆分上线即可,不会报错
print(str1.split(‘a’, 60)) # ['I love Python ', ‘nd j’, ‘v’, ’ ', 'nd c ', ‘nd lixi’, ‘olong’]
‘’’
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
join 字符串合并
list1 = str1.split()
list2 = [1,2,3,4,‘abc’]
print(list1)
将list1 按照指定分隔符❤ 合并为一个字符串
格式:分隔符.join(iterable(可迭代类型))
print(‘❤’.join(list1)) # I❤love❤Python❤and❤java❤and❤c❤and❤lixiaolong
进行join合并时,要注意可迭代类型中全部元素都要是字符串类型,否则无法合并
print(‘❤’.join(list2)) # TypeError: sequence item 0: expected str instance, int found
7、字符串转换
-
capitalize:将字符串首字母大写,其余字母小写
-
title: 将字符串中每个单词首字母大写(任何非字母字符都可以作为单词分隔符)
-
upper:将字符全部变为大写
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-WcM4OJIg-1710979841638)]