一、下标

下标又叫索引,也就是编号;其作用是通过下标快速的找到数据(下标从0开始)

例:

a = 'python'
print(a[0])
print(a[1])

结果:

Python字符与数组 python字符数组 操作_字符串

 二、切片

切片:截取操作对象其中的一部分(字符串、列表、元组都可以进行切片操作)

语法:

序列[ 开始位置下标 : 结束位置下标 : 步长]

注意:

1.不包括结束位置下标对应的数据,正负整数都可

2.步长是选取的间隔,正负整数都可,默认步长为1

例:

a = 'python'
print(a[0:5:2])

结果:

Python字符与数组 python字符数组 操作_子串_02

应用:

a = '012345'
print(a[0:5:])  # 结果:01234      不写步数,默认为1
print(a[5:0:-1])  # 结果:54321    从下标5到0,方向为从右到左,步数方向也必须为从右到左,否则不会输出任何结果
print(a[0:5:2])  # 结果:024       步数为2,代表每次走两步所以是024
print(a[2:])  # 结果:2345         结束位置下标不写,默认到结尾
print(a[:5])  # 结果:01234          开始位置下标不写,默认起始位置为开头
print(a[:])  # 结果:012345        开始和结束位置都不写,默认从开头到结尾
print(a[::-1])  # 结果:543210     步长为-1,方向从右到左,所以最后输出也从右到左
print(a[-5:-1:])  # 结果:1234     最后一个数的下标为-1,从右往左依次减一,所以-5对应1
print(a[-5:-1:-1])  # 结果:无     下标方向为从左到右,而步长方向为右到左,方向不同,不会输出结果

三、查找

字符串的查找:查找子串在字符串中的位置或者出现次数

1.find():检测某个子串是否包含在这个字符串中,如果在返回这个子串开始位置下标,否则返回-1

语法:

字符串序列.find(子串,开始位置下标,结束位置下标)

注意:

开始位置和结束位置下标可以省略,表示在整个字符串中查找

2.index():检测某个子串是否包含在这个字符串中,如果在则返回这个子串的下标,否则会报错

语法:

字符串序列.index(子串,开始位置下标,结束位置下标)

注意:

开始位置和结束位置下标可以省略,表示在整个字符串中查找

3.rfind():和find()功能相同,但查找方向从右侧开始

4.rindex():和index()功能相同,但查找方向从右侧开始

5.count():返回某个子串在字符串中出现的次数

语法:

字符串序列.count(子串,开始位置下标,结束位置下标)

a = '0123456789234'
print(a.find('3'))              # 结果:3
print(a.find('234'))            # 结果:2
print(a.find('3', 0, 2))        # 结果:-1,没有查找到find会输出-1
print(a.index('3'))             # 结果:3
print(a.index('234'))           # 结果:2
# print(a.index('3', 0, 2))     # 没有查找到结果,程序报错
print(a.count('2'))             # 结果:2,一共有两个2,所以输出2
print(a.rfind('234'))           # 结果:10,从右开始所以先查找到末尾的‘234’
print(a.rindex('234'))          # 结果:10,从右开始所以先查找到末尾的‘234’

四、修改

1.字符串的修改(常用)

修改:通过函数的形式修改字符串中的数据

(1)replace():替换

语法:

字符串序列.replace(旧子串,新子串,替换次数)

应用:

a = '123123'
b = a.replace('1', '0', 1)
print(b)                        # 结果:'023123'替换一次,只将第一个1改为0
print(a)                        # 结果:'123123'说明原字符串并未被修改
b1 = a.replace('1', '0')
print(b1)                       # 结果:'023023'替换次数未写,所有1都被替换
b2 = a.replace('1', '0', 5)
print(b2)                       # 结果:'023023'替换次数大于旧字串个数,所有1都被替换

注意: 

<1>所写替换次数大于字符串中旧子串的数量或者不写替换次数则会将所有旧子串都替换

<2>replace()函数并不会修改原本的字符串,它有返回值,返回值为修改之后的字符串

<3>数据分为两种:可变类型和不可变类型,而字符串属于不可变类型(与<2>相关联)

(2)split():按照指定字符分割字符串(返回一个列表,丢失分割字符)

语法:

字符串序列.split(分割字符,num)

应用:

a = '0120120120'
b1 = a.split('0')               # 不写切割次数默认全部切割
print(b1)
b2 = a.split('0', 2)
print(b2)
b3 = a.split('0', 5)            # 切割次数过大效果等同于全部切割
print(b3)

结果:

Python字符与数组 python字符数组 操作_Python字符与数组_03

注意:

num表示分割字符出现的次数,即将来返回数据为num+1个

(3)join():将多个字符串合并成一个新的字符串

语法:

字符或子串.join(多字符串组成的序列)

应用:

a = ['a', 'b', 'c']
b = '***'.join(a)
print(b)

结果: 

Python字符与数组 python字符数组 操作_数据_04

注意:

join将序列中的多字符串中间用字符或子串连接起来

2.字符串的修改之大小写转换

(1)capitalize():将字符串第一个字符转行成大写

应用:

a = 'hello world and hello PYTHON'
b = a.capitalize()
print(b)

结果:

Python字符与数组 python字符数组 操作_python_05

注意:capitalize()函数转换后,只有字符串第一个字符大写,其他都为小写(原来是大写的也转化为小写)

(2)title():将字符串每个单词首字母转换成大写(其余均为小写)

应用:

a = 'hello world and hello PYTHON'
print(a.title())

结果:

Python字符与数组 python字符数组 操作_字符串_06

(3)lower():将字符串中大写转换为小写

应用:

a = 'hello world and hello PYTHON'
print(a.lower())

结果:

Python字符与数组 python字符数组 操作_字符串_07

(4)upper():将字符串中小写转化为大写

应用:

a = 'hello world and hello PYTHON'
print(a.upper())

结果:

Python字符与数组 python字符数组 操作_子串_08

3.字符串的修改之删除空白字符 

(1)lstrip():删除字符串左侧空白字符

(2)rstrip():删除字符串右侧空白字符

(3)strip():删除字符串两侧空白字符

应用:

a = '   hello world and hello PYTHON    '
print(a.lstrip())
print(a.rstrip())
print(a.strip())

结果:

Python字符与数组 python字符数组 操作_python_09

(右侧一部分可以被光标选中说明右侧有空白) 

4.字符串的修改之字符串的对齐

(1)ljust():返回一个原字符串左对齐,并使用指定字符(默认为空格)填充至对应长度的新字符串

语法:

字符串序列.ljust(长度,填充字符)

(2)rjust():返回一个原字符串右对齐(其他与ljust()一样)

(3)center():返回一个原字符串居中对齐(其他与ljust()一样)

应用:

a = 'python'
print(a.ljust(1))           # 所填长度小于字符串长度结果与原字符串一致
print(a.ljust(10, '_'))     # 字符串长度为6,设置长度为10并且为左对齐,所以字符串右侧会有四个填充字符
print(a.rjust(10))          # 默认填充字符为空格
print(a.center(10, '_'))

结果:

Python字符与数组 python字符数组 操作_python_10

 5.字符串的修改之判断

(1)startswith():检查字符串是否以指定子串开头,是则返回True,否则返回False。如果没有设置开始和结束位置下标,则在指定范围内检查

语法:

字符串序列.startswith(子串,开始位置下标,结束位置下标)

(2)endswith():检查字符是否以指定子串结尾(其余与startswith一致)

应用:

a = 'hello world and hello python'
print(a.startswith('hello'))
print(a.startswith('hel'))
print(a.endswith('thon'))
print(a.endswith('ons'))

结果:

Python字符与数组 python字符数组 操作_字符串_11

 (3)isalpha():如果字符串中至少有一个字符并且所有字符都是字母则返回True,否则返回False

(4)isdigit():如果字符串只包括数字则返回True否则返回False

(5)isalnum():如果字符串中至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False

(6)isspace():如果字符串只包括空白则返回True否则返回False

应用:

a = 'hello1world2'
print(a.isalpha())      # 字母
print(a.isdigit())      # 数字
print(a.isalnum())      # 字母或数字
print(a.isspace())      # 空白

结果:

Python字符与数组 python字符数组 操作_python_12