[Python学习笔记]字符串&切片

本文章将作为博主对Python学习从基础开始的笔记与整理,也将自己的某些针对Python的理解分享出来有便于跟博主一样的大学新手一起学习和理解Python。 

本文将更加详细的介绍字符串(String)的相关内容。

目录

字符串

1.索引

 2.拓展知识

3.切片

1)根据索引获得指定字符

2)获得部分字符串

 字符串常见函数

1.大小写

2.去空格

 3.查找

1)find()函数

​编辑2)index()函数

​编辑 3)count()函数

​编辑 4)replace()函数

4.分隔与合并

 5.排版

​编辑 6.小技巧

1)字符串是可以使用拼接和增强运算符的

2)in/not in判断字串存在

3)is 和 == 的区分


字符串

字符串是不可变的

name = '哈哈'

name作为变量是可变的,但是'哈哈'是字符串,他的本身从我们输入起就无法再改变它的内容,我们能改变的只有给这个变量name赋予一个新的字符串比如'呵呵'。

拓展一下:

不可变数据:数字(Number),字符串(String),元组(Tuple)

可变数据:列表(List),字典(Dictionary),集合(Set)

1.索引

字符串是有序的字符序列

正索引:从0开始到[字符串的长度-1]

x  i  a  o
---------->
0  1  2  3

负索引:从-1开始到[-字符产长度]

x  i  a  o
<----------
-4 -3 -2 -1

 2.拓展知识

字节:计算机常用存储单位byte,1byte=8bit

字符:单个数字,文字,符号

字符集:储存的字符与二进制的对应关系:A--65

编码:将字符转换成计算机识别的二进制数字 ord()

解码:计算机识别的二进制数字转换成字符 chr()

3.切片

切片可以算是索引的更加深层次的应用,也是在字符串的使用中较为重要的部分。切片最重要的前提就是一定要是有序的字符串。 

1)根据索引获得指定字符
score = '零一二三四五六七八九'
print(f'score[2]:{score[2]}')

这个用法很简单,记得正索引的时候是从0开始编号的就好。

2)获得部分字符串

[起始索引结束索引步长]

同样的取得到起始索引,取不到结束索引,默认步长为1

score = '零一二三四五六七八九'
print(f'score[1: 5: 1]:{score[1: 5: 1]}')
print(f'score[1: 5: 2]:{score[1: 5: 2]}')
print(f'score[-1: -5: -1]:{score[-1: -5: -1]}')
print(f'score[-5: -1: 1]:{score[-5: -1: 1]}')
print(f'score[-3: 3: 1]:{score[-3: 3: 1]}')
print(f'score[-3: 3: -1]:{score[-3: 3: -1]}')

我们在这里同样可以分为正序索引和逆序索引,像上面的代码一样。需要注意,[起始索引结束索引步长]三个元素一定要构成一个封闭的范围,也就是起始索引根据步长一定要能到达结束索引。

 能注意到这里出现了一个问题,当范围[-3: 3: 1]时并没有输出结果,这就是因为此时的起始索引没能到达结束指引。不是因为正负之间不能存在交叉,可以看下面的[-3: 3: -1]范围是成功输出了的,这是因为在我们字符串score中‘零’和‘九’就是这个字符串的头和尾了,当索引到这两个位置的时候就将要停止了,没有办法从尾向后直接跳回头部或者从头部跳到尾部,但如果没有到头仍是连续的,那么正负是可以交叉的,下面画图来加深一下理解:

 字符串常见函数

1.大小写

capitalize():将字符串改为首字母大写

isupper():判断字符串是否都是大写

islower():判断字符串是否都是小写

upper():将字符串改为全部都是大写

lower():将字符串改为全部都是小写

拓展一个:

isalpha():判断字符串是否是一个中英文

name = 'xIAO'
print(f'首字母大写:{name.capitalize()}')
print(name)#-->证明字符串不可变
print(f'是否大写:{name.isupper()}')
print(f'是否小写:{name.islower()}')
print(f'大写:{name.upper()}')
print(f'小写:{name.lower()}')
print(f'是否是一个中英文:{name.isalpha()}')

 

这里提醒一点,那就是字符串本身是不可变的。在上面的代码中可以看到,我们的函数并没有对原本字符串进行改变,我们所打印的内容是对应新的一个id的储存内容。

2.去空格

去左边空格:lstrip()

去右边空格:rstrip()

去两边空格:strip()

name = ' xiao '
print(f'去左边空格:{name.lstrip()}')
print(f'去右边空格:{name.rstrip()}')
print(f'去两边空格:{name.strip()}')

 

 3.查找

查找是一个非常重要的功能,你可以利用查找去判断是否包含某些内容。

1)find()函数

find(sub, start, end) 找出字串首次出现的索引值

sub:连续的自串 start:开始的索引

end:结束的索引--->默认整个子串

-1表示在目标范围内未找到,注意start能取到但end的位置无法被取到

name = 'my name is xiao'
print(f'查找”xiao“:{name.find("xiao")}')
2)index()函数

index(sub, start, end)

index()函数在各个用法上以及输出上和find是完全一样的,但要注意的是,如果需要查找的内容并不在范围中的话,index()函数会导致报错,而find()函数不会。

name = 'my name is xiao'A
print(f'查找”xiao“:{name.index("brian")}')
 3)count()函数

count(x, start, end) 返回当前字符串出现x的个数

name = 'my name is xiao'
print(f'出现‘m’的次数:{name.count("m")}')
 4)replace()函数

replace(需要被替换的字串替换的内容替换几个)

默认-1为替换全部

name = 'my name is xiao'
print(f'替换所有的m:{name.replace("m", "!", -1)}')

4.分隔与合并

分隔:split(sep, maxsplit)

sep:以什么来分隔

maxsplit:分隔的次数

adress = '成都-重庆-北京-上海'
print(f'分隔:{adress.split("-")}')

分隔出的内容会以逗号隔开,你可以把它们放入列表。

合并:想并入的内容.join(被并入的内容)

可以连接字符串,列表,元组,字典

print(f"合并:{'$'.join('xiao')}")

他会在每个字符之间都加入合并的内容。

 5.排版

居中对齐:center(内容长度补充内容)

居左对齐:ljust(内容长度补充内容)

居右对齐:rjust(内容长度补充内容)

内容长度:你所希望的这一排总共有多少个字符

补充内容:当你的居中内容不够你的希望长度时,没有内容处用什么来填充

name = 'xiao'
print(f'居中对齐,10个长度,不足用*号补齐:{name.center(10, "*")}')
print(f'居左对齐,8个长度,不足用*号补齐:{name.ljust(8, "*")}')
print(f'居右对齐,10个长度,不足用!号补齐:{name.rjust(10, "!")}')

 6.小技巧

1)字符串是可以使用拼接和增强运算符的

不是只有数字才可以使用运算,字符串也可以通过一些运算符来简便我们的操作。

print('#' * 10)
name = 'xiao'
name += '123'
print(name)

2)in/not in判断字串存在

当我们想简单的查找某些字符串是否在范围内时,也可以直接使用in/not in来快速判断。

if 'x' in name:
    print('x在name里')
3)is 和 == 的区分

a is b -> 先比较内容,再比较id

a == b -> 只比较内容

也就是说,如果使用is,那么此时的a和b必须要内容和id都一样,而==的话只要内容一样就可以。例如is不管要看两个人的名字相同,还需要确定身份证号相同才判断是一个人,但==只看名字是否相同就判断两人是否是同一人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦海挣扎的大学牲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值