字符串的学习

一、复习昨天所学习的内容

1.字符串(str)

什么是字符串?

通过双引号或者单引号引起来的内容就是字符串

2.Unicode编码

a.python中的字符串中字符采用的是Unicode编码,Unicode编码,是通过两个字节来对一个字符进行编码,他几乎包含了世界上所有的符号。

b.ASCII编码:通过一个字节来对一个字符进行编码

c.Unicode编码表中包含了ASCII编码表

d.chr(数字):获取数字在Unicode编码表中对应的字符,返回的是只有一个字符的字符串。

e.ord(字符):获取字符对应的Unicode编码。

二、字符串中的元素

1.阻止转义

在字符串的最前面可以添加r/R来阻止字符串中的转义字符转义

str1=r’how are you\n fine’

print(str1) 结果为: how are you\n fine

2.python中可以把字符串看成是一个序列(容器),容器中的内容是字符,每一个字符可以称为字符串中的元素

字符串是一个不可变的序列,有序(不可变指的是字符串中的每个字符,以及每个字符的位置不可变)

3.获取字符串中的单个字符

语法:字符串(下标) –> 根据下标获取字符串中的字符

说明:a.字符串:可以是字符串的变量也可以是字符串值

​ b.[]:固定写法

​ c.下标:0~字符串长度-1;-1 ~ -长度

注意:下标是整数;并且下标不能越界

python中每个字符串中的字符都会对应一个下标,下标是根据字符在字符串中的位置,从前往后依次增加的(第一个)

str3=’python’

p->0 y->1 t—>2 …..n->5

n->-1 o->-2 h->-3 ……p->-6

print(str3[3]) 获取正数3+1个元素 输出结果为: h

print(str3[-2]) 获取倒数第二个字符(元素) 输出结果为:o

print(‘hello’[-1]) 获取hello倒数第一个字符 输出结果为:o

index=2

print(str3[index]) 输出的结果为:t

print(str3[6//2]) 输出结果为:h

输出结果为:h、o、o、t、h

练习:获取’gond good study\n day day up!’

注意:一个空格算一个字符,一个转义字符算一个字符,一个制表符也是算一个字符

str4=’gond good study\n day day up!’

print(str4[-11],str4[17])

输出的结果为:d、d

4.获取字符串中的部分字符(切片)

a.语法:字符串[起始下标:结束下标] –>获取字符串中从起始下标开始,到结束下标结束下标前的所有的字符(默认步长为1)

注意:起始下标对应的字符要在结束下标对应的字符前面,否取不到值

str5=’同九年,汝何秀!’

print(str5[1:5])

print(str5[5:-1])

输出的结果为:九年,汝

b.语法:字符串[起始下标:结束下标:步长] –>从起始下标开始获取,每步长获取一个获取到结束下标前为止

步长为正:从前往后取(起始下标对应的字符要在结束下标对应的字符前面,否取不到值)

步长为负:从后往前取(起始下标对应的字符要在结束下标对应的字符后面,否取不到值)

str5=’海贼王、一拳超人、一人之下、进击的巨人’

print(str5[1:10:2]) 结果为:贼、拳人一

print(str5[10:1:-2]) 结果为:人、超一王

c.切片时下标可以省略,省略不同的下标有不同意义

省略起始下标:字符串[:结束下标] —>从开头开始取(注意:这儿开头可能是第一个字符也可能是最后一个字符)

str6=’阁下和不同风起,扶摇直上九万里’

print(str6[:4]) 结果为:阁下和不

print(str6[:4:-1]) 结果为:里万九上直摇扶,起风

省略结束下标:字符[起始下标:] –>从开始下标取,取完为止

print(str6[-4:]) 结果为:上九万里

print(str6[-4::-1]) 结果为:上直摇扶,起风同不和下阁

两个下标都省:字符[:] –>全部取完

print(str6[:]) 结果为:阁下和不同风起,扶摇直上九万里

print(str6[::-1]) 结果为:里万九上直摇扶,起风同不和下阁

str7=str6[::-1]

print(str7) 结果为:里万九上直摇扶,起风同不和下阁

注意:切片的时候可以越界

三、字符串运算符 (+、*和比较运算符)

1.字符串的+号运算符

字符串1+字符串2 –>将字符串1和字符串2拼接在一起产生一个新的字符串

注意:如果加好两边要么都是数字,要么都是字符串,不能一样一个

str1=’玉树临风美少男’

str2=’揽镜自顾夜不眠’

print(str1+str2) 输出的结果为:玉树临风美少男揽镜自顾夜不眠

print(str1+’,’+str2+’!’) 输出的结果为:玉树临风美少男,揽镜自顾夜不眠!

2.*

字符串1*n —>字符串1重复出现n次,产生一个新的字符串

n必须是整数

str3=’家有千金,行止由心!’

print(str3*3) 输出的结果为:家有千金,行止由心!家有千金,行止由心!家有千金,行止由心!

先算乘再算加

str4=str1+str3*2

print(str4) 输出的结果为:玉树临风美少男家有千金,行止由心!家有千金,行止由心!

比较运算符

判断相等

print(‘abc’==’abc’) 判断两个字符串的值是否相等

print(‘abc’!=’ab’) 输出的结果为:True

字符串比较大小:比较两个字符串中从前往后每个字符的编码值得大小,比较两个字符不相同为止

print(‘zabc’>’zab’) 输出的结果为:True

判断一个字符是否是数字字符,判断一个字符是否是字母字符

char=’H’

print(‘0’<=char<=’9’) 判断char是否是数字字符 输出的结果为:False

print(‘a’<=char<=’z’ or ‘A’<=char<=’Z’) 判断char是否是字母 输出的结果为:True

4.in和not in

# 字符串1 in 字符串2 —->判断字符串1是否在字符串2中(字符串2中是否包含字符串1),结果是布尔值

print(‘ab’in’aaabc’) 输出的结果:True

print(‘ab’in’acb’) 输出的结果为:False

5.len()函数

len是python内置函数,功能·是用来获取序列的长度(容器中元素的个数)(len(序列))

字符串的长度就是字符串中字符的个数

print(len(‘hello’)) 输出的结果为: 5

str5=’床前明月光\n疑是地上霜!’

print(len(str5)) 输出的结果为:12

print(str5[len(str5)-1]) 输出的结果为:!

print(str5[-len(str5)]) 输出的结果为:床

四、格式字符串

字符串内部,通过格式占位符来表示字符串变化的部分,然后在后面用值来填充变化的部分

语法:带有占位符的字符串%(给占位符赋值的值)

注意:前有多少个占位符,后面()中就必须有多少值。并且值的个数和值的类型要和前面的占位符一一对应

a.%s —>字符串

b.%d —>整数

c.%f —>小数

d.%.nf –>保留小数点后面n位小数(五舍六入)

name=’李四’

age=20

money=10.567

message=’姓名:%s 年龄%d 薪资%.2f’ %(name,age,money)

print(message) 输出的结果为:姓名:李四 年龄20 薪资10.57

print(‘%d:%c’ % (97,97)) 输出的结果为:97:a

五、字符串的内置函数

python内部给我们提供很多字符串相关的方法,使用方式:字符串。方法名(参数名)

1.capitalize():将字符串的第一个字符转换为大写,返回一个新的字符串

注意:如果第一个字符不是字母,就不转换

str1=’love’

new_str=str1.capitalize()

print(new_str) 输出的结果为:Love

2.字符串对齐

a.center(width,fillchar)

b.ljust(with,fillchar)

c.rjust(width,fillchar)

width –> 长度,新字符串的总共的长度 fillchar–>剩下部分字符就是长度是1的字符串长度(只能填单个字符)

str2=’xxx’

new_str=str2.center(7,’0’)

print(new_str) 输出的结果为: 00xxx00

new_str=str2.ljust(7,’0’)

print(new_str) 输出的结果为:xxx0000

new_str=str2.rjust(7,’0’)

print(new_str) 输出的结果为: 0000xxx

练习:根据进班顺序产生对应的学号。学号要求

例如:num=1 —>python18070001 num=11 –>python18070011

num=’11’

new=’python1807’+str(num).rjust(4,’0’)

print(new) 输出的答案为:python18070011

3.字符串1.count(zi字符串2) –>统计字符串1中字符串2的个数

print(‘abcdabcdaaaa’.count(‘ab’)) 输出的结果为: 2

print(‘hello world’.count(‘l’)) 输出的结果为:3

4..字符串1.endswith(字符串2) —>判断字符串1是否以字符串2结尾

​ 字符串1.startswith(字符串2) —>判断字符串1是否以字符串2开头

str1=’when i was’

print(str1.endswith(‘as’)) 输出的结果为:True

print(str1.endswith(‘when’)) 输出的结果为:False

5.字符串1.find(字符串2)–>在字符串1中查找字符串2,返回第一个到的开始下标,如果没有就返回-1

str1=’when i was young,i have a dream’

print(str1.find(‘was’)) 输出的结果为:7

print(str1.find(‘wasaa’)) 输出结果为: -1

6.isnumeric()

数字表示True中文也行,其他表示False

print(‘1234’.isnumeric()) 输出的结果为:True

7.isTitle()

标题化:每个单词首字母大写,其他字母小写

8.字符串1.join(字符串2) –>将字符串1插入到字符串2中每个字符之间,产生一个新的字符串

print(‘aaa’.join(‘xyz’)) 输出的结果为: xaaayaaaz

六、day4作业

1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello Eric, would you like to learn some Python today?”。

name=’Eric’

print(‘hello ‘+name+’,’+’would you like to learn some Python today?’)

\2. 调整名字的大小写: 将一个人名存储到一个变量中,再以小写、大写和首字母大写的方式显示这个人名。

name=’tom’

# 首字母大写

new_name=name.capitalize()

print(new_name) 输出为:Tom

# 小写方式

new_name=name.lower()

print(new_name) 输出为:tom

#大写方式

new_name=name.upper()

print(new_name) 输出的为:TOM

\3. 名言: 找一句你钦佩的名人说的名言,将这个名人的姓名和他的名言打印出来。输出应类似于下面这样(包括引号):

celebrity=’邓小平’

str1= ‘“不管黑猫白猫,捉住老鼠就是好猫”’

print(celebrity+’曾说过:’+str1)

# 邓小平曾说过:“ 不管黑猫白猫,捉住老鼠就是好猫 ”

4.名言2: 重复练习3,但将名人的姓名存储在变量famous_person 中,再创建要显示的消息,并将其存储在变量message 中,然后打印这条消息。

famous_person=’邓小平’

str1= ‘“不管黑猫白猫,捉住老鼠就是好猫.”’

message=famous_person+’曾说过:’+str1

print(message)

# 邓小平曾说过:“ 不管黑猫白猫,捉住老鼠就是好猫 ”

\5. 剔除人名中的空白: 存储一个人名,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合”\t” 和”\n” 各一次。 打印这个人名,以显示其开头和末尾的空白。然后,分别使用剔除函数lstrip() 、rstrip() 和strip() 对人名进行处理,并将结果打印出来。

name = ‘ \n\t 小明 \t\n ‘

print(name)

print(name.lstrip())

print(name.rstrip())

print(name.strip())

结果为:

​ 小明

小明

​ 小明

小明