字符串

字符串基本使用

  1. 单引号双引号不可以交叉引用 都可以表示字符串
  2. 一对单引号包裹一对双引号 或者一对双引号包裹单引号
  3. “”" “”" ‘’’ ‘’’ 也表示字符串
  4. 转义字符
    \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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值