首页 > 代码库 > 字符串

字符串

 一.字符串的定义,循环

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个是比较常用的方法,需要熟练掌握

 

字符串