一、字符串
1.什么是字符串
- 用单引号或双引号括起来的字符集就是字符串
'jfcsiufcs',"ivisl " - 字符串中的每个独立的单元我们叫它字符
例如:字符串'kjdnds'中'k','j'等
2、转义字符
说明python中没有字符类型,如果要表示字符,就是用一个长度为1的字符串表示
长度:指的就是字符串中字符的个数,例如:'abc'-长度是3,空格,Tab键都是1个字符
- 转义字符的长度都为1
a、通过\将一些特殊的字符转换成一个具有特殊功能或特殊意义的字符,这就是转义字符
b、常见的转义字符
\n-换行
\t-制表符
\-增加1个
'-增加一个'
......
poem='床前明月光,疑是地上霜'
str1='abc\nbcd'
str2='abc\\bcd'
print(poem,'\n',str1,str2)
床前明月光,疑是地上霜
abc
bcd abc\bcd
3、Unicode编码
a、python中字符的编码采用的是Unicode编码
b、Unicode是采用两个字节对一个字符进行编码(2~15)
c、Unicode编码中包含了ASCII码
注:
将字符转换成指定的数值,这个过程就是编码
将数值转换成对应的符号的过程就是反编码
- 将Unicode码转换成字符
print(chr(0xA001))——ꀁ - 将字符转换成Unicode编码
print(ord("樊"),ord('振'),ord('霖'))——27146 , 25391, 38678
二、获取字符
字符串实质可以看成一个不可变的序列,序列内容是字符,一旦字符确定,那么里面的字符和字符的位就不可变,例如:‘abc’
1、python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串【索引】
说明:
a、字符串:可以是字符串值,也可以是字符串变量
b、[]:中括号是固定语法
c、索引:
- 从0开始到字符串长度减一,
- -1~-长度(-1对应的是最后一个字符,-2对应是倒数第二个字符)
注意索引不能越界,否则会报错(产生异常)
2.获取部分字符(获取子串)——切片
- 字符串[下标1:下标2]:从下标1开始,获取到下标2前的所有字符
- 从下标1开始,每次下标值加一,一直加到下标二前可视为步进默认为1
注意:下标1对应的位置一定要在下标2对应的位置前
str2='hello world'
print(str2[0:8]) #hello wo
print(str2[2:-1]) #llo worl
print(str2[2:14]) #llo world
切片操作时下标可以越界,越界时取到临界值
3、取字符串时的步进
字符串[下标1:下标2:步进]
从下标1开始获取,每次下标值增加步进值,每增加一次取一个字符,直到取到下标2前为止
注意:
a、步进是正数,那么下标1对应的字符的位置一定要在下标2对应的位置的前面
b、步进是负数,那么下标1对应的字符的位置一定要在下标2对应的位置的后面
c、下标2对应的字符是取不到的,因为只能取到下标2前一位
str3='hello world'
print(str3[0:5:2]) 步进2:hlo 步进3: hl
print(str3[0:5:-1]) #无法取,第0位在第五位前面,而步进为负
print(str3[-1:5:-1]) #dlrow
4、 下标的省略
切片的时候,下标1和下标2是可以省略的
- 下标1省略:默认从开头开始获取(开头可能是字符串的第一个字符,也可能是最后一个字符)
str4='good good study,day day up'
print(str4[:4])
print(str4[:4:-1])
- 下标2省略:从下标1位置开始获取,获取到结束(结束可能是字符串的最后一个字符,也可能是第一个字符)
print(str4[1:])
print(str4[3::-1]) #doog
print(str4[:]) #good good study,day day up
print(str4[::-1]) #pu yad yad,yduts doog doog
练习,将一个字符串中奇数位取出(从0位开始)
str='kjdsns'
print(str[1::2])
三、字符串的相关运算
1、+运算符
- python支持两个字符串相加,其效果就是将两个字符串拼接在一起产生一个新的字符串
注意:如果加的一边是字符串,那么另外一个也必须是字符串
print('abc'+'123')
str='world'
newstr='hello'+' '+str
print(newstr)
2、*运算符
str1* 整数(n):字符串重复n次
print('abc'*3)——abcabcabc
3、所有比较运算符
- 比较相等'==',‘!=’
str1='abc'
print('abc'==str1)
print(str1!='ab') - 比较大小‘>’,'<'
str1>str2;str1让str1中的每一位字符,分别和str2中每一位的字符依次比较直到不同为止,再看看不同字符中谁的编码值大或者小
print('abcd'>'abcde') ——False
4、in和not in
str1 in str2:判断str1是否在str2中
结果是布尔值
print('abc'in'abcde') ——True
print('abc'in'a1b22c3') ——False
5、获取字符串长度
字符串的长度指的是字符串中字符的个数
len()内置函数
str3='project'
print(len(str3),len('abc 123\n')) #7 8
空串(引号内什么都没有)
str4=''
print(len(str4))
len1=len(str3)
index=len1-1
print(str3[-1],str3[len(str3)-1],'\n',str3[index])
6、阻止转义
- 在字符串的最前面添加r/R可以阻止转义
print('a\nb') #b
print(r'a\nb') #a\nb
print(r'a\nb',R'a\nb\\') #a\nb a\nb\\
7.字符串的格式化
'格式符' %(格式符对应的值)
说明:
- %是固定格式
- 带格式符的字符串中有几个格式符,那么在后面的括号中就有几个和它一一对应的值
%s——字符串
%d——整数
%f——浮点数 %.nf-
%c——字符 可以将数字转换成字符拼接到字符串中
first_name='樊'
last_name='振霖'
age=21
name=first_name+last_name
print(name)
hello,xxx!今年x岁
new_str='hello,%s%s!今年%d岁。'%(first_name,last_name,age)
print(new_str)
金额:xx.xx
money=100
print('金额:%.2f元'%(money))
%c的用法
unit='$'
str5='金额:%.2f%c'%(money,unit)
char_code=94
new_str='%d对应的字符是%c'%(char_code,char_code)
print(new_str)
%x/%X
number=1000
newstr='%d的十六进制进制:%x'%(number,number)
print(newstr)
练习使用变量保存学生的名字,年龄和成绩
xxx今年xx岁,他的语文成绩是xxx。要求成绩只保留一位小数
name='樊振霖'
age=21
score=98
print('%s今年%d岁,他的语文成绩是%.1f。'%(name,age,score))
四、字符串中的相关方法
python为字符串提供了很多内置函数
使用方式是:字符串.函数()
注意:这些所有函数的功能都不会影响原来的字符串,而是产生一个新的字符串
1、capitalize()
将字符串的第一个字符转换成大写
str1='hello python'
newstr=str1.capitalize()
print(newstr,str1)
print('abc'.capitalize())——
2、center(width,fillchar)
让字符串变成width对应的长度,原内容居中,剩余部分使用fillchar的值来填充
width-整数 fillchar——任意字符
print('abc'.center(10,'')) ——**abc****
3、rjust(width,fillchar)
让字符串变成width长度,原内容靠右,剩余的部分使用fillchar填充
1 2 3 4————>001 002 003 004
number='1'
new_id=number.rjust(3,'0')
print(new_id)——001
4、count(str)
判断str值在原字符串中出现的次数
str——>字符串
print('abcaaa'.count('a'))
5、str1.join(str2)
在str2中的每个字符之间插入一个str1
print('+'.join('abc'))
6.str1.replace(old,new)
将str1中'old'全部替换成'new'
print('shdb'.replace('h','fg'))
7.str.endswith(str1)
判断字符串str是否以字符串str1结尾
print('dsobj'.endswith('bj'))
8、str.expandtabs(tabsize=8)
把字符串str中的tab符号转为空格,tab符号默认的空格数为8
str='abcd efg'
print(str.expandtabs(tabsize=3))
9.find(str)
检测 str 是否包含在字符串中,包含则返回最开始的索引值,没有则返回-1
print('abcd'.find('n'))
10、index(str)
跟find()方法一样,只不过如果str不在字符串中会报一个异常.
print('abcd'.index('b'))
print('abcd'.index('n'))
11.isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回 False
print('abcd'.isalnum()) ——True
print('ab12'.isalnum()) ——True
print('ab 12'.isalnum()) ——False