python字符串
字符串定义
python中定义字符串可以用单引号或双引号括起来,也可使用三个引号括起来,三引号可以跨行,例如
str1 = 'abc'
str2 = '''abc
defxxx salkfj
alksfd'''
字符串常量
在python中,字符串都是不可变的,换句话说,如果你使用+
连接字符串,那么本质上是新建了一个字符串,而不是在原字符串后加上一段。所有的字符串都是常量,而我们的字符串变量是引用了这个常量
字符串的分片
字符串可以像列表和元组一样进行分片,就连操作也是一样的
str1 = "hello,world"
print(str1[:5])# hello
使用str1[::-1]
可以将字符串反转
字符串常用方法
-
capitalize()
:返回将字符串的第一个字符变为大写后的字符串,原字符串不变,若第一个字符不是字母,则不变 -
casefold()
:返回将字符串的所有字符变为小写后的字符串,原字符串不变,其他语言的大小写也会转换 -
center(width)
:返回一个将字符串用空格填充至width
长度,并把原字符串居中的字符串,原字符串不变,如果空格是单数,则字符串后面会多一个空格,如果width小于字符串长度,则返回原字符串。例如str1 = "hello,world" print(str1.center(15))# hello,world
-
count(sub[,start[,end]])
:计算sub
在字符串中出现的次数,start
和end
表示查找范围,下同 -
endswith(sub[,start[,end]])
:判断字符串是否是以sub
结尾的,类似的有startswith
-
find(sub[,start[,end]])
:获取sub
在字符串中的索引值,如果没有,返回-1,类似的rfind
可以从右边开始找 -
index(sub[,start[,end]])
:和find
类似,不同的是如果没有,则返回一个异常 -
join(sub)
:返回一个把原字符串插入到sub的每两个元素间后的字符串,如果sub只有一个字符,则返回sub,例如str1 = "1" print(str1.join("abc"))# output:a1b1c print(str1.join(['a','b','c']))# output:a1b1c
-
lower()
:将大写转为小写,原字符串不变,只对英文字母转换,类似的有upper
,将小写转换为大写 -
lstrip([chars])
:返回去掉字符串左边所有是字符串chars
的成员后的字符串,默认是空格,类似的有rstrip
,去掉的是右边的,例如str1 = "12132456" print(str1.lstrip("12"))# 32456
-
partition(sub)
:将原字符串以字符串sub
为分界线的3元组,例如s1='11222233' print(s1.partition('2'))# ('11', '2', '22233')
-
replace(old,new,[,count])
:将原字符串里的old
替换为new
的字符串,不超过count
次,count
缺省时为无穷次。原字符串不会改变 -
split(sep=None,maxsplit=-1)
: 对字符串进行切片,如果sep
没有参数,则默认按空格为分隔符,最多分成maxsplit
次,默认为无数次,返回切片后的字符串组成的列表,例如str1 = "123 15 666" print(str1.split())# ['123', '15', '666'] print(str1.split("1"))# ['', '23 ', '5 666']
-
swapcase()
:将原字符串的大小写翻转
原生字符r
‘r’是防止字符转义的,如果路径中出现’\t’的话,不加r的话\t就会被转义,而加了’r’之后’\t’就能保留原有的样子,原理是在转义字符前加\
,举个例子
s = r"\tt"
print(s)# \tt
字符串的格式化
format
有两种形式,位置参数和关键字参数,它可以把字符串里对应的位置或者关键字替换成format的参数,原字符串不变
-
位置参数,举个例子
s1 = 1 s = '{0} + 2 = {1}' print(s.format(s1,3))# 1 + 2 = 3
这里的
{0}
和{1}
就是位置字段,它们会依次被替换成format里对应的位置参数 -
关键字参数,举个例子
s1 = 1 s = '{x} + 2 = {y}' print(s.format(x=s1,y=3))# 1 + 2 = 3
在这里{x}和{y}就是关键字字段,x和y是关键字,format里的参数是关键字对应的变量或常量。
这两种形式可以混用,但位置参数必须在关键字参数之前,个人不推荐这样使用,就不举例了
如果原字符串里本身包含{0},且这个不是要替换的字段,则需要将其写为{{0}},类似于转义字符,这样{0}将不会参与format函数的替换,注意:在不使用format时,不会发生转义,例如
s1 = 1
s = '{{0}} + 2 = 3'
print(s.format(s1))# {0} + 2 = 3
在使用时可以使用格式化字符来进行显示,例如
s1 = 111111
s = '{0:.1e} + 2'
print(s.format(s1))# 1.1e+05 + 2
具体的格式化字符如下
格式化符号
这个类似于c语言的printf函数,就是语法略有不同,举个例子
s = '%d + %.2f = %d'
x = 1
y = 2.2
z = 3.2
print(s%(x,y,z))# 1 + 2.20 = 3
r = '%c'
print(r%97)# a
注意:这不是print函数的用法,而是字符串的,例如这样也可以
s = "%.2f"%0.3
格式符表如下