> 文章列表 > Python基础-04 字符串

Python基础-04 字符串

Python基础-04 字符串

字符串的表示方式

  • 在Python中,可以使用一对单引号/双引号或者一对三个双引号/一对三个单引号表示字符
a = 'hello'
b = "hello"
c = '''hello'''
d = """hello"""
# 如果字符串里面还有双引号,外面就可以使用单引号
# 反之一样
# 如果字符串里面有双引号,外层也可以使用一对三个双引号或者一对三个单引号
  • 字符串中的转义字符 \\
x = 'I\\'m xiaoming' # \\ 表示的是转义字符,作用是对 \\ 后面的字符进行转义
# \\' 显示一个普通的单引号
# \\" 显示一个普通的双引号
# \\n 表示一个换行
# \\t 表示一个制表符
# \\\\ 表示一个普通的反斜线
# 在字符串引号前添加一个r,在Python中表示的是原生字符串

字符串的下标和切片

  • 下标我们也可以称之为索引,表示第几个数据
  • 可迭代对象: str list tuple dict set range 都可以遍历
  • 其中 str list tuple 可以通过下标来获取或者操作数据
  • 在计算机中,下标都是从0开始的
  • 可以通过下标来获取或者修改指定位置的数据

字符串是不可变的数据类型
对于字符串的任何操作都不会修改原有的字符串!!!
切片操作就是从字符串中复制一段指定的内容,生成一个新的字符串

# 切片语法:
# m[start:end:step]
# 包含start,不包含end
# 如果只设置了start,会从start到结尾
m[1:]# 如果只设置了end,会从开头到end
m[:4]# step代表步长,每隔step-1取一次
m[2:5:1]# 步长默认为1,步长不能为0# 步长为负数的时候代表从右往左找,同时应注意start及end
m[15:3:-1]# 可以使用::复制字符串
m[::]# 可以使用::-1将字符串倒置
m[::-1]# start和end如果是负数,但step不为负数时,相当于从右往左找找到对应的start和end(右往左第一个是-1),但字符串输出还是从左往右
a = 'abcdefghijklmnopqrstuvwxyz'
print(a[-9:-5])
# rstuprint(a[-5:-9:-1])
# vuts

字符串的常见操作

a = 'abcdefghijklmnopqrstuvwxyzi'
# 获取字符串的长度
print(len(a))  # 27# 查找内容相关的方法# find/index/rfind/rindex 可以获取指定字符的下标
print(a.find('i'))  # 8,如果字符存在,返回下标,不存在返回-1
print(a.index('i'))  # 8,如果字符存在,返回下标,不存在就报错
print(a.rfind('i'))  # 26,从右往左查找第一个指定字符(最大索引),不存在返回-1
print(a.rindex('i'))  # 26,从右往左查找第一个指定字符(最大索引),不存在报错# 判断相关的方法# startswitch,endswitch,isalpha,isdigit,isalnum,isspace
# is开头的是判断,结果是一个布尔类型
# 均为字符串的使用方法
# startswitch  以某个字符开始
# endswitch  以某个字符结束
# isalpha  是否是字母
# isdigit  是否是数字
# isalnum  是否是数字加字母,只写数字或者只写字母都是True
# isspace  是否全部是空格# 字符串替换方法# replace
word = 'hello'
print(word.replace('l','x'))  # 原来的字符串不会变,而是生成一个新的字符串用来保存替换后的结果

字符串内容分割的相关操作

split rsplit splitlines parttion rparttion

x = 'zhangwan-lisi-wangwu-ermazi-dazhutou'
# 使用split方法,可以将一个字符串切割成一个列表,可以传两个参数,第一个是分隔的字符,第二个是分隔的次数
print(x.split('-'))  # ['zhangwan', 'lisi', 'wangwu', 'ermazi', 'dazhutou']
print(x.split('-',2))  # ['zhangwan', 'lisi', 'wangwu-ermazi-dazhutou']# 使用rsplit方法,可以将一个字符串切割成一个列表,传第二个参数代表从右往左分几次
print(x.rsplit('-'))  # ['zhangwan', 'lisi', 'wangwu', 'ermazi', 'dazhutou']
print(x.rsplit('-',2))  # ['zhangwan-lisi-wangwu', 'ermazi', 'dazhutou']# 使用splitlines,可以将一个字符串按照换行符进行分隔,返回一个列表
a = 'hello \\n world'
print(a.splitlines())  # ['hello ', ' world']# 使用partition,可以按照传入的参数从左往右查找第一个匹配的参数,将字符串分为三个部分,返回一个元组
x = 'zhangwan-lisi-wangwu-lisi-ermazi-dazhutou'
print(x.partition("lisi"))  # ('zhangwan-', 'lisi', '-wangwu-lisi-ermazi-dazhutou')# 使用rpartition可以按照传入的参数从右往左查找第一个匹配的参数,将字符串分为三个部分,返回一个元组
print(x.rpartition("lisi"))  # ('zhangwan-lisi-wangwu-', 'lisi', '-ermazi-dazhutou')

字符的编码

  • ASCII码表使用一个字节来表示一个字符.最多只能表示128个,不适用最高位,0-127
  • ISO-8859-1 使用了最高位 0-127 和 ASCII码表完全兼容,最多能表示255个字符,0-254
  • Unicode编码 --> 绝大部分国家的问题都有一个对应的编码

字符串的编码集

使用内置函数 chr 和 ord 能够查看数字和字符的对应关系
ord 获取字符对应的编码
chr 根据编码获取对应的字符

print(ord('A'))  # 65
print(chr(65))  #A
  • 将字符串转换为指定的编码集的结果
  • 如果有一个编码集的结果,想把它转换为对应的字符,使用decode
# 字符串转换为指定的编码集
a = '你'
print(a.encode('gbk'))
print(a.encode('utf-8'))# b'\\xc4\\xe3'
# b'\\xe4\\xbd\\xa0'# 编码结果转换为对应的字符
x = b'\\xe4\\xbd\\xa0'
print(x.decode('utf-8'))# 你

成员运算符

in 和 not in 运算符的优先级
用来判断一个内容在可迭代对象中是否存在

word = "hello"
c = input("请输入一个字符")for x in word:if x == c :print('你输入的内容存在')break
else:print('你输入的内容不存在')

格式化打印字符串

  • 可以使用 % 占位符来表示格式化一个字符串
  • %s 表示的是字符串的占位符
  • %d 表示的是整数的占位符
    • %nd 打印时,显示n位,如果不够,在前面使用空格补齐
  • %f 表示的是浮点数的占位符
    • %.nf 打印时保留小数点后n位
  • %x 将数字使用十六进制输出
  • %% 输出一个%
name = "zhangsan"
age = 18
print('我叫%s,今年%d岁了'%(name,age))# 我叫zhangsan,今年18岁了# %d 拓展用法
print('今天是第%3d天'%(5))
print('今天是第%03d天'%(5))
print('今天是第%-3d天'%(5))# 今天是第  5天
# 今天是第005天
# 今天是第5  天# %f 拓展用法
print('我有%.2f元钱'% 3.1415926)# 我有3.14元钱

字符串的format方法的使用

  • {}也可以用于字符串占位
# {}中什么都不写,会读取format方法后面的内容,一一对应填充
x = '大家好,我是{},今年{}岁了'.format('zhangsan',18)
print(x)  # 大家好,我是zhangsan,今年18岁了# {数字}会根据数字的顺序读取format方法后面的内容,按顺序对应,数字从0开始
x = '大家好,我是{1},今年{0}岁了'.format(18,'zhangsan')
print(x)  # 大家好,我是zhangsan,今年18岁了# {变量}会根据变量读取format方法后面的内容,一一对应填充
x = '大家好,我是{name},今年{age}岁了'.format(age = 18,name = 'zhangsan')
print(x)  # 大家好,我是zhangsan,今年18岁了# {数字}{变量}可以混合使用,但是需要一一对应
# {}和{数字}不可以混合使用# 列表配合format使用
d = ['zhangsan',18]
x = '大家好,我是{},今年{}岁了'.format(*d)
print(x)  # 大家好,我是zhangsan,今年18岁了#字典配合format使用
d = {'name':'zhangsan','age':'18'}
x = '大家好,我是{name},今年{age}岁了'.format(**d)
print(x)  # 大家好,我是zhangsan,今年18岁了

语文教学资源