四、python字符串

学习目标

文章免费配套资料:python字符串的思维导图

  • 能使用代码定义字符串
  • 能够使用下标获取字符串里指定位置的数据
  • 能够对字符串进行遍历
  • 能够使用 切片 获取字符串里指定位置的数据
  • 能够说出字符集编码集的概念
  • 能使用代码将字符串转换成为对应的编码和二进制
  • 能使用成员运算符判断指定元素在可迭代对象里是否存在

一、字符串的表示方式

  • 在Python里,可以使用 一对单引号、一对双引号、一对三个单引号、一对三个双引号 表示字符串
a = 'hello'
b = "good"
c = '''hehehe'''
c = """hehehe"""
  • 如果字符串里还有 双引号,外面就可以使用 单引号。(也可使用 \ 对内部引号进行转义)
a ='I said:"XXX"' 
a ='I said:\'XX\'' 
'''
\' ===> 显示一个普通的单引号
\" ===> 显示一个普通的双引号
\n ===> 换行
\t ===> 制表符
\\ ===> 表示一个普通的反斜线

# 在字符串的前面添加一个 r,在Python里表示是原生字符串
a = r"good mor\ning" # 输出 good mor\ning
'''

二、字符串的下标和切片

2.1 字符串的下标

  • 下标 我们又称之为 索引,表示第几个数据
  • 可迭代对象:str、list、tuple、dict、set、range 都可以遍历
  • str、list、tuple可通过下标获取或操作数据
  • 在计算机里,下标是从 0 开始的
  • 字符串是不可变数据类型,不能通过下标对数据进行修改

2.2 字符串的切片

  • 切片 就是 从字符串里复制一段指定的内容,生成一个新的字符串
m = 'abcdefghijklmnopqrstuvwxyz'
print(m[5]) # f
'''
切片语法:iter[start:end:step]
切片结果是:[start,end) 包含start不包含end
step 是步长,理解为间隔。每隔 step-1 个取一次
step 为负数时,表示从右往左获取
'''
print(m[2:]) # cdefghijklmnopqrstuvwxyz
print(m[:9]) # abcdefghi
print(m[3:15:2]) # dfhjln
print(m[15:3:-1]) # ponmlkjihgfe 从右相左切片
print(m[::-1]) # 倒序切片
print(m[-9:-5]) # rstu;start 和 end 是负数,表示从右边数

三、字符串的常见操作

内置函数描述
len获取长度
find,index,rfind,rindex查找内容
startswith,endswith,isalpha,isdigit,isalnum,isspace判断
count计算出现的次数
replace替换内容
split、rsplit、splitlines、partition、rpartition切割字符串
capitalize、title、upper、lower修改大小写
ljust、rjust、center、lstrip、rstrip、strip空格处理
join字符串拼接
x = 'abcdefghijklmn'

# 获取长度
len(x)  # 14

# 查找相关内容的方法 find/index/rfind/rindex 可以获取指定字符的下标
x.find('l') # 11
x.find('p') # 如果字符在字符串里不存在,结果是 -1
x.index('l') # 11
x.index('p') # 使用index,如果字符不存在,会报错
x.rfind("l") # 找符合查询条件中的最大索引值
x.rindex("l") # 找符合查询条件中的最大索引值

# startswith,endswith,isalpha,isdigit,isalnum,isspace
# is 开头的是判断,结果是一个布尔类型
"hello".startswith("he") #判断是否以指定的内容开头
"hello".endswith("he") #判断是否以指定的内容结尾
"hello".isalpha() # 判断内容是否是纯字母
"hello".isdigit() # 判断内容是否是纯数字
"hello".isalnum # 判断内容是否由纯数字与字母组成
"".isspace() # 判断内容是否是空格

# replace方法:用来替换字符串
word = "hello"
m = word.replace('l','x')
print(word) # hello 字符串是不可变数据类型
print(m) # hexxo 原来的字符串不会改变,而是生成一个新的字符串来保存替换后的结果

# split、rsplit、splitlines、partition、rpartition 
x = 'zhangsan,lisi,wangwu'
# 使用split方法,可以将一个字符串切割成一个列表
y = x.split(',')   # y ['zhangsan','lisi','wangwu']
y = x.rsplit(',',2) # 可设置最大分割元素,从右至左分 

# partition 指定一个字符串作为分隔符,分为三部分
# 前面 分隔符 后面
print('abcdefXmpqrst'.partition('X')) # ('abcdef','X','mpqrs')

3.1 字符串运算符

  1. 字符串和字符串之间能够使用 加法运算符,作用是将两个字符串拼接成为一个字符串。例如 ‘hello’ + ‘world’ 的结果是 ‘helloworld’
  2. 字符串和数字之间可以做 乘法运算,结果是将指定的字符串重复多次。例如:‘hello’ * 2 的结果是 hellohello
  3. 字符串和字符串之间,如果使用比较运算符进行计算,会获取 字符对应的编码,然后进行比较
  4. 除上述几种运算符以外,字符串默认不支持其他运算符

四、字符集和编码

4.1 字符集

在这里插入图片描述

  • 使用 内置函数 chr 和 ord 能够查看数字和字符的对应关系 (对应unicode编码)
chr(65) # A
ord('a') # 95

4.2 编码规则

在这里插入图片描述

  1. CBK:国标扩,汉字占 两个字节,简体中文
  2. BIG5:繁体中文
  3. utf-8:同一编码,汉字占 三个字节
  • 字符串转换成为指定编码集结果
# str.encode(编码集)
y = '你'.encode('gbk') # b'\xc4\xe3'

# code.decode(编码集)
y.decode('gbk')

五、成员运算符

  • in 和 not in 运算符
  • 用来判断一个内容在 可迭代对象 里是否存在
'a' in 'abcd' # True

六、格式化打印字符串

# 方法一:可以使用 % 占位符来表示格式化一个字符串
# %s ===> 表示的是字符串的占位符
# %d ===> 表示的是整型的占位符
# %f ===> 表示的是浮点型的占位符 
print('大家好,我的名字是%s,我今年%d岁了' % (name,age))

# 方法二:str.format(),使用{}进行占位
# 1、{} 什么都不写,会读取后面的内容,一一对应填充
print('大家好,我的名字是{},我今年{}岁了'.format('张三',18))

# 2、{数字} 根据数字的顺序来进行填入。数字从 0 开始
print('大家好,我的名字是{1},我今年{0}岁了'.format(18,'张三'))

# 3、{变量名}
print('大家好,我的名字是{name},我今年{age}岁了'.format(name='张三',age=18))

# 方法三:python3.6+ 可在字符串前加f
print(f'大家好,我的名字是{'张三'},我今年{18}岁了')

在这里插入图片描述

pycharm快捷键

  • 双击 shift 会弹出全局搜索框
  • 快速格式化代码 ctrl + alt +l (自定义为:alt + shift + f)
  • 快速复制粘粘选中的代码:ctrl + d
  • 移动一行代码:alt + 上下箭头
  • 注释:ctrl + /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ModelBulider

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值