一.字符串的定义,循环
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个是比较常用的方法,需要熟练掌握