目录
4.1字符串简介
4.1.1字符串的概念
在程序中,字符串是由若干字符组成的序列。
字符串的3种表现形式(单引号标识字符串、双引号标识字符串、三引号标识字符串)
单引号标识字符串(使用单引号标识的字符串中不能包含单引号)
'xiaofan'
'666'
'小帆说:“坚持到感动自己,拼搏到无能为力”。'
双引号标识字符串(使用双引号标识的字符串中不能包含双引号)
"xiaofan"
"666"
"I'll do my best."
三引号标识字符串(使用3对单引号或3对双引号标识字符串可以包含多行)
'''
坚持到感动自己
拼搏到无能为力
'''
"""
遇到IT技术难题
就上CSDN社区
"""
这种形式的字符串经常出现在函数定义的下一行,用来说明函数的功能。
通常使用前两种形式创建字符串,之后需要通过变量引用字符串,具体示例如下:
name = "小帆"
print(name) #输出小帆
Python中的字符串不能被修改,具体示例如下:
name = "xiaofan"
name[4] = 'f' #错误
print(name[4]) #正确
虽然字符串不可以修改,但可以截取字符串一部分与其他字符串进行连接,具体示例如下:
str = "xiaofan is a programmer."
print(str[0:14]+"girl")
上述示例中,str[0:14]截取"xiaoqian is a ",然后再与"girl"进行连接,最后输出"xiaoqian is a girl"。字符串的截取与连接将会在后面详细讲解。
4.1.2转义字符
转义字符以反斜杠“\”开头,后跟若干个字符。转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。表中列出了常用的转义字符及含义。
在表中,'\ddd'和'\xhh'都是用ASCII码表示一个字符,如'\101'和'\x41'都是表示字符'A'。转义字符在输出中有许多应用,如想在单引号标识的字符串中包含单引号,则可以使用如下语句:
str = 'I\'ll do my best.'
其中,“\'”表示对单引号进行转义。当解释器遇到这个转义字符时就理解这不是字符串结束标记。如果想禁用字符串中反斜杠转义功能,可以在字符串前面添加一个r,具体示例如下:
print(r'\n表示回车换行') #输出\n表示回车换行
4.2字符串的输入与输出、索引与切片
4.2.1字符串的输出
#简单输出
print("xiaofan") #输出xiaofan
#字符串格式化输出
age = 18
print("小帆的年龄为%d"%age) #输出小帆的年龄为18
#format string为格式标记字符串
format string % string_to_convert
format string % (string_to_convert1,string_to_convert2,...)
"""
format_string为格式标记字符串,包括固定的内容与待替换的内容,待替换的内容用格式化符号标明,string_to_convert为需要格式化的数据。
如果需要格式化的数据是多个,则需要使用小括号括起来并用逗号分隔。
"""
format_string中常用的格式化符号如表所示。
格式化符号的用法:
name,age,id,score = "小帆",18,1,100
print("学号:%d\n姓名;%s\n年龄:%d\n成绩:%f"\%(id,name,age,score))
除了上表的格式化符号,有时还需要调整格式化符号的显示样式,例如是否显示正值符号“+”,下表中列出了辅助格式化符号。
a,b = 65,3.1415926
#输出字符串宽度为10,并且以0x形式显示65对应的十六进制数,注意默认是右对齐的。
print("%#10x"%a)
#输出字符串宽度为10,并且以0X形式显示65对应的十六进制数,注意“-”代表左对齐。
print("%-#10x"%a)
#输出字符串中正值时前加“+”。
print("%+d"%a)
#输出字符串宽度为5,显示的小数点精度为3。
print("%5.3f"%b)
#通过*设置显示宽度为5。
print("%*.3f"%(5,b))
#通过*设置小数点精度为3。
print("%5.*f"%(3,b))
4.2.2字符串的输入
前面的程序中,字符串都是先定义后使用。如果需在程序运行时,通过键盘输入字符串,则可以使用input()函数。它表示从标准输入读取一行文本,默认的标准设备是键盘,其语法格式如下:
input([prompt])#其中,prompt表示提示字符串,该函数将输入的数据作为字符串返回。
#字符串输入的使用方法
name = input("请输入用户名:")
pwd = input("请输入密码:")
print("用户%s的密码为%s"%(name,pwd))
print(type(name))
print(type(pwd))
4.3字符串的索引与切片
字符串可以通过运算符[]进行索引与切片,字符串中每个字符都对应两个编号(也称下标),如图所示。
每个字符串中的某个字符可以有两种方法索引,例如索引str中字符‘q’,具体示例如下:
str[4]
str[-9]
两种形式都可以索引到字符'q'。
字符串分片是指从字符串中截取部分字符并组成新的字符串,并不会对原字符串做任何改动,其语法格式如下:
[起始编号:结束编号:步长] 该语句表示从起始编号处开始,以指定步长进行截取,到结束编号的前一位结束。
str = "www.baidu.com"
print(str[4:9]) #默认步长为1
print(str[4:9:2]) #设置步长为2
print(str[-9:-4]) #默认步长为1
print(str[-9:-4:2]) #设置步长为2
print(str[:]) #整个字符串
print(str[:9]) #等价于str[0:9:1]
print(str[4:]) #默认到字符串尾部(包括最后一个字符)
print(str[:-9]) #从第一个字符到编号为-9的字符(不包括编号为-9的字符)
print(str[-4:]) #从编号为-4的字符到最后一个字符(包括最后一个字符)
print(str[::-2]) #从后往前,步长为2
print(str[:-9]) #从第一个字符到编号为-9的字符(不包括编号为9的字符)
4.4字符串的运算
除了数字类型的数据可以参与运算外,字符串也可以参与运算,如4.3节中字符串通过[]运算符进行索引与切片,具体如表所示。
字符串的运算,使用方法
str1,str2 = "CSDN","学堂"
print(str1 + str2)
print(3*(str1 + str2))
if"coding"in"coding.com":
print("coding is in coding.com")
else:
print("coding is not in coding.com")
4.5字符串常用函数
4.5.1大小写转换
函数 | 说明 |
upper() | 转换字符串中所有小写字母为大写 |
lower() | 转换字符串中所有大写字母为小写 |
上述两种方法都返回一个新字符串,其中的非字母字符保持不变。如果需要进行大小写无关的比较,则这两个函数非常有用。接下来演示其用法,如例所示。
name = 'xiaofan'
str = input("请输入用户名(不区分大小写):")
if str.lower() == name:
print("欢迎用户%s登录"%name)
else:
print("用户名错误")
4.5.2判断字符
Python中提供了判断字符串中包含某些字符的函数,这些函数在处理用户输入的字符串时是非常方便。这些函数都是以is开头,如表所示。
这些函数的返回值都为布尔值。
4.5.3检测前缀或后缀
在处理字符串时,有时需要检测字符串是否以某个前缀开头或以某个后缀结束,这时可以使用startswith()与endswith()函数,如表所示。
str = "www.baidu.com"
print(str.startswith("www"))
print(str.startswith("coding",4))
print(str.endtswith("com"))
print(str.endswith("ke",0,12))
4.5.4 合并与分隔字符串
在处理字符串时,有时需要合并与分割字符串,这时可以使用join()与split()函数,如表所示。
seq1 = "CSDN"
print("|".join(seq1))
seq2 = ["CSDN","CSDN学堂","程序员特训营"]
print("-".join(seq2))
seq3 = "CSDN | CSDN学堂 | 程序员特训营"
print(str3.split("|"))
print(str3.split("|",1))
4.5.5对齐方式
在处理字符串时,有时需要设置字符串对齐方式,这时可以使用rjust()、ljust()和center()函数,如表所示。
4.5.6 删除字符串头尾字符
在处理字符串时,有时需要删除字符串头尾的某些字符,这时可以使用strip()、lstrip()和rstrip()函数,如表所示。
4.5.7 检测子串
在处理字符串时,有时需要检测某个字符串中是否包含子字符串,这时可以使用find()函数,其语法格式如下:
find(str,beg = 0,end = len(string))
该函数检测str是否包含在检测字符串中。如果指定范围beg和end,则检查是否包含在指定范围内。如果包含,则返回开始的下标值,否则返回-1。
除此之外,还可以通过index()函数检测字串,其语法格式如下:
index(str,beg = 0,end = len(string))
该函数的用法与find()函数类似,两者的区别是:如果str不在字符串中,那么index()函数会报一个异常。
4.5.8替换子串
在文字处理软件中,都会有查找并替换的功能。在字符串中,可以通过replace()函数来实现,其语法格式如下:
replace(old,new[,max])
该函数将字符串中old替换成new并返回新生成的字符串。如果指定第三个参数max,则表示替换不超过max次。
4.5.9 统计子串个数
在文字处理软件中,都会有统计某个词语出现次数的功能。在字符串中,可以通过count()函数来实现,其语法格式如下:
count(str,beg = 0, end = len(string))
该函数返回str在字符串中出现的次数。如果指定beg或end,则返回指定范围内str出现的次数。
4.5.10 首字母大写
capitalize()函数用于将字符串的第一个字母变成大写,其他字母变成小写,其语法格式如下:
str = "codingke is a great Website."
print(str.capitalize())
4.5.11标题化
title()函数可以将字符串中所有单词首字母大写,其他字母小写,从而形成标题,其语法格式如下:
str = "xiaofan education"
print(str.title())