字符串是 Python 中最常用的数据类型。我们可以使用引号(‘或”)来创建字符串。
Python不支持单个字符的存在,单字符在 Python 中也是作为一个字符串使用。
一、访问字符串中的值
我们可以使用索引(从0开始)来访问字符串中的具体字符。使用中括号来获取。
二、切片操作
切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。 切片的语法:[起始:结束:步长]
步长:表示下标变化的规律。
注意:选取的区间属于左闭右开型,即从”起始”位开始,到”结束”位的前一位结束(不包含结束位本身)。结束位允许使用负数表示倒数的字符
name = 'abcdef'
print(name[0:3]) # 取下标 0~2 的字符
print(name[0:5]) # 取下标为 0~4 的字符
print(name[3:5]) # 取下标为 3、4 的字符
print(name[2:]) # 取下标为2开始到最后的字符
print(name[1:-1]) # 取下标为1开始到最后第2个之间的字符
三、字符串运算符
初始化两个字符串str1 = “good”和str2 = “python”。
操作符 | 功能 | 实例 |
+ | 连接字符串 | str1+sre2 输出结果:”goodpython” |
* | 重复输出字符串 | str1 * 2 输出结果:”goodgood” |
[] | 根据索引获取字符串中的字符内容 | str1[2] 的输出结果:”o” |
in | 判断某一字符是否存在于字符串中,存在返回True,否则返回False | ‘g’ in str1 的输出结果:True |
not in | 判断某一字符是否不存在于字符串中,不存在返回True,否则返回False | ‘h’ not in str1 输出结果:True |
r或R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | print(r’\\t’)输出’\\t’ |
四、字符串三引号
三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
HTML = '''
<HTML>
<HEAD>
<TITLE>Friends CGI Demo</TITLE>
</HEAD>
<BODY>
<H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=BackONCLICK="window.history.back()"></FORM>
</BODY>
</HTML>
'''
五、字符串内建函数
内建函数名 | 描述 | 实例 |
capitalize() | 将字符串的第一个字母变成大写,其他字母变小写。该方法返回一个首字母大写的字符串。注意:如果首字符为非字母那么将不会变为大写,但是其余字符变为小写。 | str = “good PYTHON” str.capitalise()输出结果:”Good python” str = “123 GOod” str.capitalize()输出结果:”123 good” |
center(width[, fillchar]) | 返回一个指定的宽度 width 居中的字符串,如果 width 小于字符串宽度直接返回字符串,否则使用 fillchar (默认使用空格)去填充。 参数: width – 字符串的总宽度 fillchar – 指定填充某个字符,并且只能是单个字符 | str = “欢迎登录” str.center(10,’*’) 输出结果:’***欢迎登录***’ |
count(str, beg= 0,end=len(string)) | 用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。 参数: sub – 搜索的子串 beg – 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。 end – 字符串中结束搜索的位置。默认为字符串的最后一个位置。 | str = “hello python” str.count(‘o’) 输出结果:2 str.count(‘o’,1,5) 输出结果:1 |
endswith(suffix, beg=0, end=len(string)) | 用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数”beg”与”end”为检索字符串的开始与结束位置。 参数: suffix – 该参数可以是一个字符串或者是一个元素。 beg – 检索的起始位置。 end – 该参数可以是一个字符串或者是一个元素。检索字符串的结束位置。 | str = “test.py” str.endswith(“.py”) 输出结果:True |
startswith(str, beg=0,end=len(string)) | 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 | |
expandtabs(tabsize=8) | 把字符串中的 tab 符号(‘\t’)转为空格,tab 符号(‘\t’)默认的空格数是 8。该方法返回字符串中的 tab 符号(‘\t’)转为空格后生成的新字符串。 参数: tabsize – 指定转换字符串中的 tab 符号(‘\t’)转为空格的字符数。 | str = “This is\tdemo” print(str.expandtabs(1)) 输出结果:”This is demo” |
find(str, beg=0 end=len(string)) | 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果在指定范围内如果包含子串,返回的是子串在字符串中的起始位置。如果不包含子串,返回-1。 参数: str – 指定检索的字符串。 beg – 开始索引,默认为0。 end – 结束索引,默认为字符串的长度。 | str = “good python” sub = “python” str.find(sub) 输出结果:5 若sub = “c++” 输出结果:-1 |
rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找. | |
index(str, beg=0, end=len(string)) | 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。 参数: 与find()函数相同 | |
rindex( str, beg=0, end=len(string)) | 类似于 index()函数,不过是从右边开始查找. | |
isalnum() | 检测字符串是否由字母和数字组成。如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False | str = “123abc” str.isalnum() 输出结果:True str = “..123abc” str.isalnum() 输出结果:False |
isalpha() | 检测字符串是否只由字母组成。 | str = “123abc” str.isalpha() 输出结果:False str = “abc” str.isalpha() 输出结果:True |
isdigit() | 检测字符串是否只由数字组成。如果字符串只包含数字则返回 True 否则返回 False。 | str = “123” str.isdigit() 输出结果:True |
islower() | 检测字符串是否由小写字母组成。如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False | str = “GoodPython” str.islower() 输出结果:False str = “123abc” str.islower() 输出结果:True str = “123456” 输出结果:False |
isspace() | 检测字符串是否只由空白字符组成。如果字符串中只包含空格,则返回 True,否则返回 False。 | str = ” “ str.isspace() 输出结果:True |
istitle() | 检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。 | str = “Head First Java” str.istitle() 输出结果:True |
isupper() | 检测字符串中所有的字母是否都为大写。 | str = “123ABC” str.isupper() 输出结果:True |
join(seq) | 用于将序列中的元素以指定的字符连接生成一个新的字符串。 参数: seq – 要连接的序列,并且里面的元素必须为字符串 | str = “-“ seq = (“188”,”0000”,”2134”) print(str.join(seq)) 输出结果:188-0000-2134 seq = “hello” #字符串也是序列 str.join(seq) 输出结果:h-e-l-l-o |
ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用fillchar(默认使用空格)填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。 参数: width – 指定字符串长度。 fillchar – 填充字符,默认为空格。 | str = “hello” str.ljust(10,’*’) 输出结果:hello***** |
rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 | |
lower() | 转换字符串中所有大写字符为小写。返回转换后的字符串。 | str = “THIS IS DEMO.” str.lower() 输出结果:this is demo. |
upper() | 转换字符串中的小写字母为大写 | |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 | str = “hello PYTHON” str.swapcase() 输出结果:HELLO python |
lstrip([chars]) | 截掉字符串左边的空格或指定字符。 参数: chars –指定截取的字符。 | str = ” lstrip()” str.lstrip() 输出结果:lstrip str = “*****lstrip()” str.lstrip(‘*’) 输出结果:lstrip |
rstrip() | 删除字符串字符串右侧的空格. | |
strip([chars]) | 在字符串上执行 lstrip()和 rstrip() | |
max(str) | 返回字符串中最大的字母。 | str = “abc” max(str) 输出结果:c |
replace(old, new [, max]) | 把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 参数: old – 将被替换的子字符串。 new – 新字符串,用于替换old子字符串。 max – 可选字符串, 替换不超过 max 次。 | str = “hello python python python” str.replace(“python”,”JAVA”) 输出结果:hello JAVA JAVA JAVA str.replace(“python”,”JAVA”,1) hello JAVA python python |
split(str=”“, num=string.count(str)) | 通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串。返回分割后的字符串列表。 参数: str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。 num – 分割次数。 | str = “this is a demo.” str.split(” “) 输出结果:[‘this’, ‘is’, ‘a’, ‘demo’] str.split(” “,2) 输出结果:[‘this’, ‘is’, ‘a demo’] |
splitlines([keepends]) | 按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 参数: keepends – 在输出结果里是否去掉换行符(‘\r’, ‘\r\n’, \n’),默认为 False,不包含换行符,如果为 True,则保留换行符。 | ‘ab c\n\nde fg\rkl\r\n’.splitlines() 输出结果:不保留换行符[‘ab c’, ”, ‘de fg’, ‘kl’] ’ab c\n\nde fg\rkl\r\n’.splitlines(True) 输出结果:保留换行符[‘ab c\n’, ‘\n’, ‘de fg\r’, ‘kl\r\n’] |
title() | 返回”标题化”的字符串,就是说所有单词都是以大写开始,其余字母均为小写 | str = “thIS a tiTLe.” str.title() 输出结果:This A Title. |
zfill (width) | 返回指定长度的字符串,原字符串右对齐,前面填充0。 参数: width – 指定字符串的长度。原字符串右对齐,前面填充0。 | str = “hello” str.zfill(2) 输出结果:hello str.zfill(10) 输出结果:00000hello |
isdecimal() | 检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。如果字符串是否只包含十进制字符返回True,否则返回False。 注意:定义一个十进制字符串,只需要在字符串前添加 ‘u’ 前缀即可。 | str = “123abc” str.isdecimal() 输出结果:False str = “123456” str.isdecimal() 输出结果:True |
partition(str) | 以str分割成三部分,str前,str和str后 参数: str – 指定分隔的字符串 | str = “this is a demo.” str.partition(“is”) 输出结果:(‘th’, ‘is’, ’ is a demo.’) |
rpartition(str) | 与partition(str)类似,只是从右边开始分割 | str = “this is a demo.” str.partition(“is”) 输出结果:(‘this ‘, ‘is’, ’ a demo.’) |