# 索引是通过下标取某一个元素 # 切片是通过下标去某一段元素 s = 'Hello World!' print(s) print(s[4]) # o 字符串里的第4个元素 print(s[3:7]) # lo W 包含下标 3,不含下标 7 print(s[:]) # Hello World! 取出所有元素(没有起始位和结束位之分),默认步长为1 print(s[1:]) # ello World! 从下标为1开始,取出 后面所有的元素(没有结束位) print(s[:4]) # Hell 从起始位置开始,取到 下标为4的前一个元素(不包括结束位本身) print(s[:-1]) # Hello World 从起始位置开始,取到 倒数第一个元素(不包括结束位本身) print(s[-4:-1]) # rld 从倒数第4个元素开始,取到 倒数第1个元素(不包括结束位本身) print(s[1:5:2]) # el 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身) print(s[7:2:-1]) # ow ol 从下标为7的元素开始(包含下标为7的元素),倒着取到下标为2的元素(不包括下标为2的元素) # python 字符串快速逆置 print(s[::-1]) # !dlroW olleH 从后向前,按步长为1进行取值 结果: !dlroW olleH
字符串的常见操作包括:
注意:在Python中,字符串是不可变的!所有的字符串相关方法,都不会改变原有的字符串,都是返回一个结果,在这个新的返回值里,保留了执行后的结果!
len函数可以获取字符串的长度。
mystr = '今天天气好晴朗,处处好风光呀好风光' print(len(mystr)) # 17 获取字符串的长度
查找相关的方法,使用方式大致相同,但是略有区别。
查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回-1.
语法格式:
S.find(sub[, start[, end]]) -> int
示例:
mystr = '今天天气好晴朗,处处好风光呀好风光' print(mystr.find('好风光')) # 10 '好风光'第一次出现时,'好'所在的位置 print(mystr.find('你好')) # -1 '你好'不存在,返回 -1 print(mystr.find('风', 12)) # 15 从下标12开始查找'风',找到风所在的位置试15 print(mystr.find('风光',1,10)) # -1 从下标1开始到12查找"风光",未找到,返回 -1
类似于 find()函数,不过是从右边开始查找。
mystr = '今天天气好晴朗,处处好风光呀好风光' print(mystr.rfind('好')) # 14
跟find()方法一样,只不过,find方法未找到时,返回-1,而str未找到时,会报一个异常。
语法格式:
S.index(sub[, start[, end]]) -> int
类似于 index(),不过是从右边开始。
python提供了非常丰富的方法,可以用来对一个字符串进行判断。
判断字符串是否以指定内容开始。 语法格式:
S.startswith(prefix[, start[, end]]) -> bool
示例:
mystr = '今天天气好晴朗,处处好风光呀好风光' print(mystr.startswith('今')) # True print(mystr.startswith('今日')) # False
判断字符串是否以指定内容结束。
mystr = '今天天气好晴朗,处处好风光呀好风光' print(mystr.endswith('好风光')) #True print(mystr.endswith('好日子')) #False
判断字符串是否是纯字母。
mystr = 'hello' print(mystr.isalpha()) # True mystr = 'hello world' print(mystr.isalpha()) # False 因为中间有空格
判断一个字符串是否是纯数字,只要出现非0~9的数字,结果就是False.
mystr = '1234' print(mystr.isdigit()) # True mystr = '123.4' print(mystr.isdigit()) # False mystr = '-1234' print(mystr.isdigit()) # False
判断是否由数字和字母组成。只要出现了非数字和字母,就返回False.
mystr = 'abcd' print(mystr.isalnum()) # True mystr = '1234' print(mystr.isalnum()) # True mystr = 'abcd1234' print(mystr.isalnum()) # True mystr = 'abcd1234_' print(mystr.isalnum()) # False
如果 mystr 中只包含空格,则返回 True,否则返回 False.
mystr = '' print(mystr.isspace()) # False mystr是一个空字符串 mystr = ' ' print(mystr.isspace()) # True 只有空格 mystr = ' d' print(mystr.isspace()) # False 除了空格外还有其他内容
返回 str在start和end之间 在 mystr里面出现的次数。
语法格式:
S.count(sub[, start[, end]]) -> int
示例:
mystr = '今天天气好晴朗,处处好风光呀好风光' print(mystr.count('好')) # 3. '好'字出现三次
替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。
mystr = '今天天气好晴朗,处处好风光呀好风光' newstr = mystr.replace('好', '坏') print(mystr) # 今天天气好晴朗,处处好风光呀好风光 原字符串未改变! print(newstr) # 今天天气坏晴朗,处处坏风光呀坏风光 得到的新字符串里,'好'被修改成了'坏' newstr = mystr.replace('好','坏',2) # 指定了替换的次数 print(newstr) # 今天天气坏晴朗,处处坏风光呀好风光 只有两处的'好'被替换成了'坏'
内容分隔主要涉及到split,splitlines,partition和rpartition四个方法。
以指定字符串为分隔符切片,如果 maxsplit有指定值,则仅分隔 maxsplit+1 个子字符串。返回的结果是一个列表。
mystr = '今天天气好晴朗,处处好风光呀好风光' result = mystr.split() # 没有指定分隔符,默认使用空格,换行等空白字符进行分隔 print(result) #['今天天气好晴朗,处处好风光呀好风光'] 没有空白字符,所以,字符串未被分隔 result = mystr.split('好') # 以 '好' 为分隔符 print(result) # ['今天天气', '晴朗,处处','风光呀,'风光'] result = mystr.split("好",2) # 以 '好' 为分隔符,最多切割成3份 print(result) # ['今天天气', '晴朗,处处', '风光呀好风光']
用法和split基本一致,只不过是从右往左分隔。
mystr = '今天天气好晴朗,处处好风光呀好风光' print(mystr.rsplit('好',1)) #['今天天气好晴朗,处处好风光呀', '风光']
按照行分隔,返回一个包含各行作为元素的列表。
mystr = 'hello \nworld' print(mystr.splitlines())
把mystr以str分割成三部分,str前,str和str后,三部分组成一个元组
mystr = '今天天气好晴朗,处处好风光呀好风光' print(mystr.partition('好')) # ('今天天气', '好', '晴朗,处处好风光呀好风光')
类似于 partition()函数,不过是从右边开始.
mystr = '今天天气好晴朗,处处好风光呀好风光' print(mystr.rpartition('好')) # ('今天天气好晴朗,处处好风光呀', '好', '风光')
修改大小写的功能只对英文有效,主要包括,首字母大写capitalize,每个单词的首字母大写title,全小写lower,全大写upper.
第一个单词的首字母大写。
mystr = 'hello world' print(mystr.capitalize()) # Hello world
每个单词的首字母大写。
mystr = 'hello world' print(mystr.title()) # Hello World
所有都变成小写。
mystr = 'hElLo WorLD' print(mystr.lower()) # hello world
所有都变成大写。
mystr = 'hello world' print(mystr.upper()) #HELLO WORLD
Python为我们提供了各种操作字符串里表格的方法。
返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)。
str = 'hello' print(str.ljust(10)) # hello 在右边补了五个空格
返回指定长度的字符串,并在左侧使用空白字符补全(右对齐)。
str = 'hello' print(str.rjust(10)) # hello在左边补了五个空格
返回指定长度的字符串,并在两端使用空白字符补全(居中对齐)
str = 'hello' print(str.center(10)) # hello 两端加空格,让内容居中
删除 mystr 左边的空白字符。
mystr = ' he llo ' print(str.lstrip()) #he llo 只去掉了左边的空格,中间和右边的空格被保留
删除 mystr 右边的空白字符。
mystr = ' he llo ' print(str.rstrip()) # he llo右边的空格被删除
删除两断的空白字符。
str = ' he llo ' print(str.strip()) #he llo
把参数进行遍历,取出参数里的每一项,然后再在后面加上mystr
语法格式:
S.join(iterable)
示例:
mystr = 'a' print(mystr.join('hxmdq')) #haxamadaq 把hxmd一个个取出,并在后面添加字符a. 最后的 q 保留,没有加 a print(mystr.join(['hi','hello','good'])) #hiahelloagood
作用:可以把列表或者元组快速的转变成为字符串,并且以指定的字符分隔。
txt = '_' print(txt.join(['hi','hello','good'])) #hi_hello_good print(txt.join(('good','hi','hello'))) #good_hi_hello
'hello' + 'world'
的结果是 'helloworld'
'hello'*2
的结果是hellohello