字符串基本使用
- 单引号双引号不可以交叉引用 都可以表示字符串
- 一对单引号包裹一对双引号 或者一对双引号包裹单引号
- “”" “”" ‘’’ ‘’’ 也表示字符串
- 转义字符
\r 将当前位置移到本行开头
\n 将当前位置移到下一行开头
\t 用来表示一个制表符
\ 代表一个反斜线字符
’ 用来显示一个单引号
" 用来显示一个双引号
r 加上r之后 \n \t不具备功能 就是一个普通字符串
test = '世界上最浪漫的事莫过于和你一起吃早餐,\n或者睁开眼就跟你说早安'#转行
test = '世界上最浪漫的事莫过于和你一起吃早餐,\t或者睁开眼就跟你说早安'#隔一个字符
test = '世界上最浪漫的事莫过于和你一起吃早餐,\'或者\'睁开眼就跟你说早安'#显示单引号
test = '世界上最浪漫的事莫过于和你一起吃早餐,\\或者\\睁开眼就跟你说早安'#显示斜杠
print(test)
test = """国家鼓励二胎目的\n是为了刺激消费"""
test1 = '''所谓的极简主义\t就是低欲望的体现\r'''
print(test,test1)
print(test[2]) #鼓
print(test[2:6]) #包含2 不包含6 鼓励二胎
print(test[1:]) #没有结束 下标为1 取到最后 包含下标1
print(test[:8]) #没有开头 从下标0开始 取到下标8 但是不包含8
# 以上都是 一个个取 也就是 默认步长为1
print(test[:8:2]) # 隔一个取一个
#步长整数 代表 从做到右取
# 步长为负数 代表 从右往左取
print(test[10:3:-1])
print(test[:]) #没头没尾 代表全部取出来 步长为一 一个个取
print(test[::-1]) #倒着从右到左取出来
print(test[-5:-3])
print(test[-5:-3:-1])
字符串常见操作
test='咱们玩个 游戏,谁动谁输,对不起我输了,\n看到你我心动了'
#字符串 空格换行逗号都算字符
print(len(test)) #系统提供查看长度方法
###########字符串的遍历##################################
x=0
while x<len(test):
print(test[x])
x+=1
for x in test:
print(x)
#################内容查找##################################
#find 从左到右 返回元素所在下标
#rfind right find 从右到左
#index 从左到右
#rindex right index 从右到左
test='咱们玩个 游戏,谁动谁输,对不起我输了,\n看到你我心动了'
print(test.find('游',0,4)) #从左往右 指定范围查找 返回第一个游所在的下标 找不到返回-1 不支持步长
print(test.rfind('游')) #从右往左 返回第一个游所在的下标
print(test.find('康')) #从左往右 字符不存在 返回-1
print(test.rfind('康')) #从右往左 字符不存在 返回-1
print(test.index('游',1,4)) #从左往右 指定范围查找 返回第一个游所在的下标 找不到报错 不支持步长
print(test.rindex('游')) #从右往左 返回第一个游所在的下标
print(test.index('康')) #从左往右 字符不存在 直接报错
print(test.rindex('康')) #从右往左 字符不存在 直接报错
##############内容判断 结果肯定是True 或者False########################
strs= 'qwertyuiopasdfghjklzxcvbnm'
strs = '123456789'
strs = 'abc123456789'
strs = ' '
print(strs.startswith('q'))#判断是否以q开头 True
print(strs.endswith('a'))#判断是否以a结尾 False
print(strs.isalpha())#判断字符串是否都是字母
print(strs.isdigit())#字符串内容是否都是数字
print(strs.isalnum())#判断是否是字母+数字 纯字母或者纯数字或者数字+字母 结果都是True
print(strs.isspace())#是否是纯空格
#要求用户输入0-9之间纯数字
num = input('请输入0-9之间数字:')
if num.isdigit():
print(int(num))
else:
print(False)
###############统计#########################################
strs = 'qwertyuiopasdfghjklzxcvbnm6666'
print(strs.count('6')) #4
##################内容替换################################
#原来的字符串永不改变 数值也永不改变
strs = 'qwertyuiopasdfghjklzxcvbnm6666'
res = strs.replace('o','xxoo')
strs.replace('o','xxoo') #replace(原来字符串,替换字符串)
print(strs)#qwertyuiopasdfghjklzxcvbnm6666 原来字符串没有变化
print(res)# qwertyuixxoopasdfghjklzxcvbnm6666 #结果存到一个新的容器中
Python 数据类型
数值 字符串 字典 元组 集合 列表 布尔
可变类型
列表 字典 集合
不可变类型
数值 字符串 元组 布尔
内容分割
split rsplit splitlines partition rpartition
#########split 作用 将字符串 切割成列表############
strs = '王超-马汉-张龙-赵虎-元芳-狄仁杰'
res = strs.split('-') #从左往右
print(res) #['王超', '马汉', '张龙', '赵虎', '元芳', '狄仁杰']
print(type(strs))#<class 'str'>
print(type(res))#<class 'list'>
res = strs.rsplit('-') #从右往左
print(res) #['王超', '马汉', '张龙', '赵虎', '元芳', '狄仁杰']
res = strs.split('-',2)#2在这里表示步长 表示切两次 从左往右切
print(res) #['王超', '马汉', '张龙-赵虎-元芳-狄仁杰']
res = strs.rsplit('-',3)#3在这里表示步长 表示切三次 从右往左切
print(res)#['王超-马汉-张龙', '赵虎', '元芳', '狄仁杰']
strs = 'qwertyuio'
res = strs.split('') #不支持空字符符号进行切割 报错
print(res)
################partition 切割成元祖######################
tup = (1,2,3,'a')
print(type(tup))#不可变类型
strs = '王超-马汉-张龙-赵虎-元芳-狄仁杰'
res=strs.partition('-')
print(res)#('王超', '-', '马汉-张龙-赵虎-元芳-狄仁杰')
res=strs.rpartition('-')
print(res)#('王超-马汉-张龙-赵虎-元芳', '-', '狄仁杰')
#拿到后缀 jpg mkv avi mp4
filename = 'h.mkv'.rpartition('.')
print(filename)#('h', '.', 'mkv')
print(filename[-1])#mkv
字母大小写转换
upper() lower()
#转大写
strs= 'qwertyuio'
print(strs.upper())#QWERTYUIO
#转成小写
strs = 'ASDFGHJKL'
print(strs.lower())#asdfghjkl
#大驼峰
UserName = 'good good study day day up'
print(UserName.capitalize())#第一个单词首字母大写
print(UserName.title())#每个单词首字母都大写
print(UserName)#原来的字符串永不改变
#让用户输入内容 当用户输入 exit或者EXIT 的时候 程序结束
#让用户一直输入 死循环
#判断内容是否是exit或者说EXIT
#break 跳出整个循环
while True:
content = input('请输入内容:')
if content.lower()=='exit':
#content.upper()=='EXIT'
break
内容填充
ljust rjust center
print('加急事件'.ljust(5,'*'))#内容在左边 右边*凑齐5个长度
print('dsa'.ljust(5,'.'))#只显示部分内容 右边有.凑齐
print('加急事件'.rjust(10,'*'))#内容在右边 左边*凑齐10个长度
print('加急事件'.center(10,'*'))#***加急事件*** #总长度 10 左右各凑齐***
空格处理
lstrip rstrip strip
#什么符号去什么
print(' 加急事件 '.lstrip(' ')+'五颗星')#加急事件 五颗星
print(' 加急事件 '.rstrip(' ')+'五颗星')# 加急事件五颗星
print(' 加急事件 '.strip(' ')+'五颗星')#加急事件五颗星
print(' 加急 事件 '.strip(' ')+'五颗星')#加急 事件 当作一个整体 去除前后左右的空格
内容缝合
join
#split 将字符串切割成数组
#将数组转成字符串 可以比作胶水 或者浆糊
lists = ['zhangsan','nihao','i am from china']
res=''.join(lists)
res1 = '&'.join(lists)
print(res)#zhangsannihaoi am from china
print(res1)#zhangsan&nihao&i am from china
字符串编码
#0 1
#ASCII码 英语
#Latin1 ASCII升级版
#汉语 韩语 日语 俄语 西班牙语 法语 Unicode编码
#utf-8 万国码 兼容世界各国语言
print(ord('a')) #97 将字符串转换成ASCII码
print(chr(65)) #A 将ASCII码转换成字符串
print(ord('不'))#19981
#GBK 中文编码
#如何识别字符串
#先将字符串 转成二进制 编码
print('熊桑'.encode('gbk'))#两个字节
print('熊桑'.encode('utf-8'))#三个字节
#二进制转成字符串 解码
#\x开头表示的是16进制
#d0dcc9a3 => 十进制 => 二进制
#相同的编码方式 要用相同的解码方式
test1 = b'\xd0\xdc\xc9\xa3' #b开头代表二进制
test2 = b'\xe7\x86\x8a\xe6\xa1\x91'
print(test1.decode('gbk')) #熊桑
print(test2.decode('utf-8')) #熊桑
print(bin(0xd0dcc9a3)) #0b11010000110111001100100110100011
成员运算符
in not in
word = '天上一只鸟'
x = input('请输入一个字符')
#判断x是否在word里边
#in not in
if x in word:
print('在')
else:
print('不在')
# find rfind
if word.find(x)==-1:
print('您输入的内容不存在')
else:
print('存在')
format 格式化字符串
%s 字符串
%d 整型数字
%nd 显示n位不够右边用空格补齐
%-nd 显示n位不够左边用空格补齐
%f 浮点型
%.nf 保留小数点后n位
%x/%X 将数字使用十六进制 输出 将十进制转化为十六进制
%% 原样输出%号
#{}也可以占位
name = '张三'
age = 18
addr = '湖北武汉'
salary = 1234.123
code = 251
str1 =f'你好,我是{name},今年{age}岁,来自英雄{addr},年薪{salary}万,工号{code}' #format缩写
print(str1)
#严格对应顺序
strs='你好,我是{},今年{}岁,来自英雄{},年薪{}万,工号{}'.format(name,age,addr,salary,code)
print(strs)
#按照数字顺序填写 0 开始
strs='你好,我是{1},今年{0}岁,来自英雄{2},年薪{3}万,工号{4}'.format(age,name,addr,salary,code)
print(strs)
#数字变量混合用 数字写前面 #变量名=变量 写在最后面
strs2='你好,我是{name},今年{0}岁,来自英雄{1},年薪{salary}万,工号{code}'.format(age,addr,name=name,salary=salary,code=code)
print(strs2)
#列表
person = ['zhangsan',18,'湖北武汉','1233.5667',251]
strs3 = '你好,我是{},今年{}岁,来自英雄{},年薪{}万,工号{}'.format(*person)
print(strs3)
#字典
person = {'name':'zhangsan','age':18,'addr':'湖北武汉','salary':'1233.5667','code':251}
strs4 = '你好,我是{name},今年{age}岁,来自英雄{addr},年薪{salary}万,工号{code}'.format(**person)
print(strs4)