字符串
简介
在非注释语句中,凡是用引号括起来的部分都是字符串
一、字符串的运算符
1、is和==的不同
# 字符串:
s1='abc'
s2="abc"
s3='''
abc
'''
#'''三引号占用的内存空间与单双引号的不同(前提:'''的内容不在一行上)
print(s1 == s2) #比较的是内容
print(s1 is s2) #比较的是地址
s1 = input('请输入:') #'abc'
s2 = input('请输入:') #'abc'
print(s1 == s2) #True
print(s1 is s2) #False
(常量赋值is是True,input输入底层做了处理所以最后的地址是不一样的)
2、字符串的运算符 + *
s3 = s1+s2 #+相当于拼接符
s4 = s1*5 #倍数
print(s3)
print(s4)
3、in 在…里面
name = 'steven'
result = 'tv' in name #返回值是布尔类型
print(result)
二、字符串的格式化
name = 'steven'
print('%s说:%s' % (name,'大家好好学习!'))
#r 保留原格式 有r 则不发生转义 没有r则发生转义(例如:\')
print(r'%s说:\'哈哈哈!\''%name)
print('%s说:\'哈哈哈!\''%name)
三、字符串的截取
1、正序
#[] [:] 索引值从0-N
filename = 'picture.png'
#位置都是从0开始,位置也会称作下标或者索引
print(filename[5]) # 通过[]可以结合位置 获取有字母 特点:只能获取一个
# range(1,10) --类似-->[1:10]
print(filename[0:7]) #包前不包后
print(filename[3:7]) #截取字符串
#省略
print(filename[3:])#只要省略的是后面的,表示一直取到字符串的末尾
print(filename[:7])#只要省略的是前面的,表示从0开始取值
#负数
print(filename[8:-1])
print(filename[:-2])
print(filename[-1:])
print(filename[-5:-1])
2、逆序
[::-1] 最后一位不仅表示步长还表示方向
str1 = 'abcdefg'
print(str1[-1:-5:-1]) #gfed
四、字符串的内置函数
简介
声明一个字符串,默认可以调用内建函数(系统准备好的一些函数)
1、大小写相关的
应用:一般用于开发中用户名的输入和验证
capitalize() title() upper() lower()
message = 'zhaorui is a beautiful girl'
msg = message.capitalize() #将字符串的第一个字符转成大写
print(msg)
msg = message.title()#将每个单词的每一个字母都大写
print(msg)
msg = message.upper()#将字符串全部转成大写
print(msg)
msg = message.lower()#将大写全部都转为小写
print(msg)
2、查找和替换
find() rfind() lfind() index() rindex() lindex() replace()
s1 = 'index lucy lucky goods'
result = 'R' in s1
print(result) #返回布尔值
position = s1.find('R') #返回值是-1代表没有找到
print(position)
position =s1.find('l') #如果可以找到则返回字母第一次出现的位置
print(position)
#find('要查找的字符',开始位置,结束位置)
p=s1.find('l',position+1) #根据第一次出现的位置往后继续查找即指定开始的位置查找
print(p)
#rfind 从右侧开始查找
#index 跟find() 方法一样,只不过如果str不在字符串中会报一个异常
# p = 'hello'.index('x')
# print(p) #报异常ValueError: substring not found
#替换replace(old,new,[max])
s1 = 'index lucy lucky goods'
s2=s1.replace(' ','',2)
print(s2)
3、编码
encode编码 decode解码
msg = '上课啦,认真听讲!' #中文的
#gbk中文 # gb2312简体中文
result = msg.encode('utf-8')
print(result)
#解码
m = result.decode('utf-8')
print(m)
4、startswith() endswith()
startswith()判断是否是以xxx开头的,或者endswith判断是否是以xxx结尾的,返回值都是布尔类型True False
应用:文件上传 只能上传图片(jpg,png,bmp,gif)
filename ='笔记本.doc'
result = filename.endswith('txt')
print(result)
s = 'hello'
result=s.startswith('he')
print(result)
补充:在开发中简单的小应用
path = input('请选择文件:')
#分析:要上传的文件路径path--》文件名--》通过文件名再判断是否是图片类型
p = path.rfind('\\') #\\表示转义之后的一根杠
filename = path[p+1:] #通过切片截取文件名字
#判断是否是图片类型?
if filename.endswith('jpg') or filename.endswith('png') or filename.endswith('bmp'):
print('是图片允许上传')
else:
print('不是图片格式,只能上传图片')
5、isalpha() isdigit()
isalpha()是否是字母 isdigit()是否是数字
s = 'abcd'
result = s.isalpha()
print('result=',result)
s='6688'
result=s.isdigit()
print(result)
应用
sum = 0
i = 1
while i<=3:
num = input('请输入数字:')
if num.isdigit():
num = int(num)
sum+=num
print('第{}个数字累加成功!'.format(i))
i+=1
else:
print('不是数字!')
print('sum=',sum)
其他:
isnumeric()如果字符串中只包含数字字符,则返回True,否则返回False
isspace()如果字符串中只包含空白,则返回True,否则返回False
6、拼接、分割、去除空格
join(seq)
以指定字符串作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串
new_str ='-'.join('abc') #将abc用-连接构成一个新的字符串
print(new_str)
list1=['a','l','l','o','w']
result=''.join(list1)
print(result)
print(type(result)) #返回一个新的字符串
split分割字符串,将分割后的字符串保存到列表中
s = 'hello world hello 2021'
result = s.split(' ',2)#表示按照空格作为分割符,分割字符串2次
print(result)
n = s.count(' ')#count(args)求字符串中指定args个数
print(n)
lstrip去掉左边空格 rstrip去除右边空格 strip()去除左右两侧空格
s = ' hello '
s = s.lstrip()
print(s+'8')