字符串
一.字符串的定义,循环
1.字符串取值
字符串是可以通过下表来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值
下标取值的格式:
变量名[X] X为第几个元素
变量名[X:Y] X为从第几个元素开始,Y为从第几个元素结束
names='zhangsan lisi xiaoming'
print(names[1])
print(names[0:7])
返回结果:
h
zhangsa
2.字符串循环
python里面的for循环,每次循环的时候,循环的是循环对象里面的每一个元素
names='zhangsan lisi xiaoming'
for name in names:
print(name)
返回结果:
z
h
a
n
g
s
a
n
l
i
s
i
x
i
a
o
m
i
n
g
其他语言通常这么写:
names='zhangsan lisi xiaoming'
for i in range(len(names)):
print(names[i])
返回结果是一样的,可是操作会有些繁琐
其中len(names)是取变量的长度
3.修改字符串中的值
注意因为字符串是不可变的变量,所以是不可以进行修改它里面的值,只可以根据下标进行取值,不可以修改,除非是重新给要修改的变量进行赋值
names='zhangsan'
# name[0]='lisan' #字符串赋值不能这么写,会报错的
names='lisan'
print(names)
二
返回结果:
lisan
一.字符串的方法
注意:所有字符串的方法,它都不会修改原来字符串的值,都会产生一个新的字符串
1.find()方法:查询字符串中元素对应的索引
1)格式为:find (元素,X,Y)
元素为需要查找的元素
X代码的是下标,表示从哪里开始找
Y 代码的也是下标,表示从哪里结束
print(name.find('world'))# 查找字符串的索引,与列表中index方法差不多,只是index找不到的话会报错的
print(name.find('he',0,1))# 找到的话返回第一次出现的索引,找不到返回-1
print(name.find('el',0,5))# 可以再后面设定查找的范围,与index方法一样
返回结果:
6
-1
1
注意:find方法和index方法的区别是,find找不到返回-1,index则会报错
2)Rfind()从后往前找,找到之后返回下标
st= 'mysql is db. mysql mysql mysql'
print(st.rfind('mysql'))#
返回结果:
25
2.Strip()方法默认去掉左右两边的换行符
print('\nmysql \n'.lstrip()) # 默认去掉左边的空格和换行
print('\nmysql \n'.rstrip()) # 默认去掉右边的空格和换行
print('\nmysql \n'.strip()) # 默认去掉两边边的空格和换行
print('mysqlm '.strip('m'))#当你传入某个字符串的话,它就只会去掉你指定的字符串
返回结果:
mysql
mysql
mysql
ysqlm
3.replace放法,替换字符串中的值
格式replace(被替换元素,要替换为的元素,X)---X为替换几次
st= 'mysql is db. mysql mysql mysql'
print(st.replace('mysql', 'oracle',2)) # 替换字符串
返回结果:
oracle is db. oracle mysql mysql
4.Split方法切割字符串,返回一个list,按照你指定的字符串去分隔这个字符串,然后放到一个list里面
st= 'zhang,li,jia,ling'
Na='zhang lii jia ling '
print(st.split()) #将字符串中的所有元素作为一个元素生成一个list
print(st.split(',')) #将字符串中的所有元素以','分割,生成一个list
print(Na.split()) #如果你什么都不写的话,按照空格分割,多个空格也算一个
返回结果:
['zhang,li,jia,ling']
['zhang', 'li', 'jia', 'ling']
['zhang', 'lii', 'jia', 'ling']
注意如果你什么都不写的话,按照空格分割,多个空格也算一个
Splitlines()按照换行符进行分割,通常在文件中会用到
Na='zhang lii\njia ling '
print(Na.splitlines())
返回结果:
['zhang lii', 'jia ling ']
5.映射—一般做加密的时候会用
p = str.maketrans('abcdefg', '1234567') # 前面的字符串和后面的字符串做映射
print('ccaegg'.translate(p)) # 输出按照上面maketrans做映射后的字符串
返回结果:
331577
6.元素中大小写转换,常用在不区分大小写的验证码校验上
stt='asdfg'
tuu='AsDfG'
if stt.upper()==tuu.upper():
print('验证码一致')
返回结果:
验证码一致
7.需要了解的一些方法
import string
print(string.ascii_letters+string.digits)#大小写字母+数字
print(string.ascii_lowercase)#所有的小写字母
print(string.ascii_uppercase)#所有的大写字母
print(string.digits)#所有的数字
返回结果:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
name='hello world'
print(name.capitalize()) # 首字母大写
print(name.center(50, '*')) # 50个-,把name放中间
print(name.endswith('d')) # 是否以x结尾,返回的结果是布尔值,可以再做判断的时候使用,如果是以X结尾就...否则就...
print('abA123'.isalnum()) # 是否包含数字或字母,当单独为数字或者英文或者英文和汉字的组合时,都返回Ture
print('abA'.isalpha()) # 是否是英文字母--可以直接用引号定义字符,也可以用已经声明过的
print(name.isalpha()) # 是否是英文字母,只有仅仅为字母的时候,才返回Ture
print('122'.isdigit()) # 是否是数字--比较常用
print('11sdf'.isidentifier()) # 是否是一个合法的变量名,不判断内置的关键字,只判读了不能以数字开头
print('aA'.islower()) # 是否是小写字母
print('AA'.isupper()) # 是否是大写字母
print(name.lower()) # 变成小写
print(name.upper()) # 变成大写
注意前6个是比较常用的方法,需要熟练掌握