字符串类型

Posted on 2019-01-03 17:08  杜卡迪S11  阅读(1159)  评论(0编辑  收藏  举报

一、字符串类型

1、用途:记录名字、性别等描述性特征

2、定义的基本方式:在' ' \" "\""" """\' ' '  ' ' '中包含一系列字符

简写:name= 'alan'     具体写法\含义: name=str('alan')

   数据类型转换:str可以将任意类型转换成字符串类型

  n=str[1,2,3] # '[1,2,3]'        这是将整型强制转换成了字符串类型,其打印结果就是字符串类型

3、常用操作方法

3.1按索引取值(正取向和反取向):只能取值,但是不能更改原值

msg='hello world'

print(msg[0])    #从左往右取,取值结果是h

print(msg[-1])  #从右往左取,取值结果是d

msg[0]='A'      #不能改值

3.2切片(顾头不顾尾,步长):从一个大的字符串中切出一个小的字符串

msg='hello world'

print(msg[0])           #结果是h  取字符串中的0号索引,默认取值顺序是从左往右

print(msg[0:5])       #结果是hello  取字符串中的0号索引,因为要取出hello,所以要取到第五位(不顾尾)

print(msg[0:5:1])    #结果是hello  同上,这里的1可以省略,因为默认情况下就是从左往右一个一个取值

print(msg[0:5:2])   #结果是hlo  取字符串中的0号索引,结果是h,尾部是取到空格,步长是2,所以是每隔两个字符取一个值

 

**反向切片(了解)

    msg='hello world'
print(msg[-1:-12:-2]) #-1 -3 -5 -7 -9 -11
结果是 drwolh #从右往左取值,用负数表示,-1取值结果是d,长度是12,步长是-2,每隔两位取一个值
===================================================================================
print(msg[-1:-12:-1]) #-1 -2 -3 -4
结果是 dlrow olleh #从右往左取值,负数表示,-1取值结果是d,长度是12,步长是-1,按顺序一个个取值
===================================================================================
print(msg[-1::-1]) #-1 -2 -3 -4
dlrow olleh #从右往左取值,空格表示默认取值到最后,步长是-1,按顺序一个个取值
===================================================================================
print(msg[::-1]) #-1 -2 -3 -4
dlrow olleh      #步长是-1,所以是从左往右取值,空格表示是取全部值,按顺序一个个取值


3、成员运算in和not in:判断一个子字符串是否存在于一个大字符串中
msg='name age sex'
print('sex' in msg) #判断sex是在msg中,结果是True
print('sex' not in msg) #判断sex不在msg中,结果是False
4、移除空白strip:移除字符串左右两边的字符
msg='*****alan****************'
res=msg.strip('*')
print(res) #strip的作用是移除多余的字符,输出结果是alan
msg='     alan  '
print(msg.strip()) #移除空白用括号代替,输出结果是alan
msg='+-*&^%alan-=)^(#'
print(msg.strip('-+*&^%(#=')) #移除什么字符就输什么字符,没有输入的字符会被保留下来
#
#
name=input('name>>>: ').strip()
pwd=input('pwd>>>:').strip()
if name == 'alan' and pwd == '123':
print('login successful')
else:
print('user or pwd error')
#当用户多输入了空格,strip()会自动给他清除空格
5.切分split:把一个字符串按照某种分隔符切成一个列表,从而方便取值
info='alan:18:male'
res=info.split(':') #将字符串info以冒号分割符切为列表,结果是['alan','18','male']
print(res[0]) #输出结果是alan
print(res) #结果是['alan','18','male']

info1=res[0]+':'+res[1]+':'+res[2info1=':'.join(res) #res中所有的元素必须是str类型
需要掌握的操作****
1、strip,lstrip,rstrip(移除空白或者多余的字符)
print('****alan***'.strip('*')) #输出结果是alan (把所有的*删掉)
print('****alan***'.lstrip('*')) #输出结果是alan*** (把左边的*删掉)
print('****alan***'.rstrip('*')) #输出结果是****alan (把右边的*删掉)
2、lower,upper(将字母转换大小写)
print('AdaEs1'.lower()) #lower将所有大写转为小写
print('AdaEs1'.upper()) #upper将所有小写转为大写

3、startswith,endswith(判断是否以某个字符开头或者结尾)
print('alex is dsb'.startswith('alex'))   #判断这个字符串里面是否已alex开头
print('alex is dsb'.startswith('al')) #判断这个字符串里面是否已al开头
print('alex is dsb'.endswith('sb')) #判断这个字符串里面是否已sb结尾

4、format的三种玩法

msg='my name is {name} my age is {age}'.format(age=18,name='alan')

print(msg)
#format需要与{}连用,format()里的内容会传给{},可以打乱顺序。
了解
msg='my name is {} my age is {}'.format('alan',18)
print(msg) #结果是 my name is alan my age is 18

msg='my name is {1}{0}{0}{0} my age is {1}{1}'.format('alan',18)
print(msg) #结果是 my name is 18alanalanalan my age is 1818
#无序的