1、字符串的特点
①字符串属于不可变有序序列:
不可变是指给a赋一个字符串后,再给a赋一个字符串,在内存里第二个字符串不会覆盖第一个字符串,会另外开辟一块内存。
有序是指字符串a b c与字符串c b a不一样,是两个字符串。
②使用单引号,双引号,三单引号或三双引号作为界定符.
③Python3.x中,字符串就是Unicode型。
Unicode可以表示世界上任何一种文字。
2、判断一个变量是否为字符串类型
>>> a = "你好"
>>> type(a)
<class 'str'>
>>> isinstance(a,str)
True
转义字符
转义字符 | 描述含义 |
---|---|
\b | 退格,把光标移到前一列的位置 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\\ | 斜线 |
\' | 单引号 |
\" | 双引号 |
\ooo | 3位八进制对应的字符 |
\xhh | 2位十六进制对应的字符 |
\uhhhh | 4位十六进制数表示的Unicode字符 |
为避免对字符串中的转义字符进行转义,可以使用原始字符串,在字符串前面加上字母r或R表示原始字符串,其中的所有字符都只表示原始含义。常用在文件路径,URL和正则表达式等。
>>> print("'abc'")
'abc'
>>> print('\'abc')
'abc
>>> print("\\")
\
>>> print("abc\n123")
abc
123
>>> print(r'\'sdf')
\'sdf
>>> print('\\\'sdf')
\'sdf
3、字符串的索引
利用方括号通过索引值得到对应位置(下标)的字符。Python中索引有两种访问方式:
①从前往后的正向索引,n个字符串,索引值从0到n-1;
②从后往前的反向索引,n个字符串,索引值从-1到-n。
>>> a = "世界这么大,我想去看一下"
>>> a[0]
'世'
>>> a[-1]
'下'
4、字符串切片
从字符串中提取子串,切片适用于字符串、列表、元组、range对象等类型。
切片的格式一般为:<字符串或字符串变量>[N:M:step]
参数N是切片的起始索引序号;参数M是切片的结束索引序号;参数step是切片的步长(可省略)。
>>> s="世界那么大,我想去看看"
>>> s[0:5]
世界那么大 #5应该是“,”但是没有显示,是因为python只取到前一位,是左闭右开[ )
>>> s[0:5:2]
世那大
>>> s[6:] #后面不写,会一直取到最后
我想去看看
>>> s[:5] #同样的,前面不写,会默认从0开始
世界这么大
>>>s[:] #全都不写,默认全写
世界那么大,我想去看看
5、format()的使用
使用方式:<模板字符串>.format(<逗号分隔的参数2)
其中模板字符串是一个由字符串和槽组成的字符串,用来控制字符串和变量的显示效果,例如:
>>>"{}那么大,{}想去看看。".format("世界","我")
世界那么大,我想去看看。
高级一点的用法:
>>> a = "{0}那么大,{1}想去看看".format("我","世界")
>>> a
'我那么大,世界想去看看'
>>> a = "{1}那么大,{1}想去看看".format("我","世界")
>>> a
'世界那么大,世界想去看看'
可以指定填空,而不需要默认的顺序。
更高级的用法:
format()的槽不仅包括参数序号还包括格式控制信息,语法格式为:{<参数序号>:<格式控制标记>}
<格式控制标记>有以下几种:
>>> a = "{0:#>9}那么大,{1}想去看看".format("我","世界")
>>> a
'########我那么大,世界想去看看'
>>> a = "{0:#<9}那么大,{1}想去看看".format("我","世界")
>>> a
'我########那么大,世界想去看看'
>>> a = "{0:#^9}那么大,{1}想去看看".format("我","世界")
>>> a
'####我####那么大,世界想去看看'
解释:填充、对齐和宽度一般同时使用,如上,0:#>9表示:我 是一个字符,需要填9个字符,剩下8个用#来填充,而 我 是在#的右边填充。
>>> a = "{0:,}那么大,{1}想去看看".format(1234567,"世界")
>>> a
'1,234,567那么大,世界想去看看'
>>> a = "{0:,.5}那么大,{1}想去看看".format(123.4567,"世界")
>>> a
'123.46那么大,世界想去看看'
解释:从最左边开始,保留5位数字,并四舍五入。对于数字还需要有逗号
>>> a = "{0:.5}那么大,{1}想去看看".format("我的娃v如果v让人特别特","世界")
>>> a
'我的娃v如那么大,世界想去看看'
解释:如果位字符串,保留前5个字符,不需要逗号。
>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(520)
'1000001000,Ȉ,520,1010,208,208'
>>> "{0:e},{0:E},{0:f},{0:%}".format(3.14159)
'3.141590e+00,3.141590E+00,3.141590,314.159000%'
解释:
整数
b:输出整数的二进制方式
c:输出整数对应的Unicode字符
d:输出整数的十进制
0:输出整数的八进制
x:输出整数的小写十六进制
X:输出整数的大写十六进制
浮点数
e:输出浮点数对应的小写字母e的指数形式
E:输出浮点数对应的大写字母E的指数形式
f:输出浮点数的标准浮点形式
%:输出浮点数的百分比形式
6、字符串操作符
>>> x = "我的猫"
>>> y = "狗很可爱"
>>> x + y
'我的猫狗很可爱'
>>> x * 4
'我的猫我的猫我的猫我的猫'
>>> "mao" in "wodemao"
True
>>> "abcd" in "abc"
False
>>> "ac" in "abc"
False
解释:
1、“+”是将两个字符串连在一起
2、“*”是将一个字符串重复写几次
3、“ in ”是判断某个字符串是否在某个字符串里面。
7、字符串处理长度
函数 | 描述 |
---|---|
len(x) | 返回字符串x的长度或者是其他组合类型的元素个数 |
str(x) | 把任意类型转换为字符串形式 |
chr(x) | 返回Unicode编码对应的单字符 |
ord(x) | 返回单个字符对应的Unicode编码 |
hex(x) | 返回整数x对应的十六进制的小写形式 |
oct(x) | 返回整数x对应的八进制的小写形式 |
8、字符串处理方法
方法 | 描述 |
---|---|
str.lower() | 以小写的方式全部返回str的副本 |
str.upper() | 以大写的方式全部返回str的副本 |
str.split(sep=None) | 返回一个列表,以sep作为分隔点,sep默认为空格 |
str.count(sub) | 返回sub子串出现的次数 |
str.replace(old,new) | 返回字符串str的副本,所有old子串被替换为new |
str.center(width,fillchar) | 字符串居中函数,fillchar参数可选 |
str.strip(chars) | 从字符串str中去掉在其左侧和右侧chars中列出的字符 |
str.join(iter) | 将iter变量的每一个元素后面增加一个str字符串 |
>>> "Sunshine always comes after the rain".split()
['Sunshine', 'always', 'comes', 'after', 'the', 'rain']
>>> "The most romantic thing is to hug each time you leave". count("h")
4
>>> "Python".center(15,"*")
'*****Python****' #返回长度为width的字符串,fillchar是单个字符。
>>> "##brave###".strip("#")
'brave'
>>> "##brave###".lstrip("#")
'brave###'
>>> "##brave###".rstrip("#")
'##brave'
>>> Is = ["Python","Java","C++","Jsp"]
>>> " ".join(Is) #向迭代变量iter元素之间插入字符串str形成新的字符串。
'Python Java C++ Jsp'
>>> "d".join("123456")
'1d2d3d4d5d6'
9、类型判断函数和类型转换函数
1、类型判断函数:
type(x):对变量进行类型判断,适用于任何数据类型。
2、类型转换函数:
int(x):将x转换为整数
float(x):将x转换为浮点数
str(x):将x转换为字符串