文章目录
学习目标
文章免费配套资料: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 字符串运算符
- 字符串和字符串之间能够使用 加法运算符,作用是将两个字符串拼接成为一个字符串。例如 ‘hello’ + ‘world’ 的结果是 ‘helloworld’
- 字符串和数字之间可以做 乘法运算,结果是将指定的字符串重复多次。例如:‘hello’ * 2 的结果是 hellohello
- 字符串和字符串之间,如果使用比较运算符进行计算,会获取 字符对应的编码,然后进行比较
- 除上述几种运算符以外,字符串默认不支持其他运算符
四、字符集和编码
4.1 字符集
- 使用 内置函数 chr 和 ord 能够查看数字和字符的对应关系 (对应unicode编码)
chr(65) # A
ord('a') # 95
4.2 编码规则
- CBK:国标扩,汉字占 两个字节,简体中文
- BIG5:繁体中文
- 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 + /