- 字符串介绍
- 字符串的格式化输出方式
- 字符串的常用操作
- 字符串常用的函数
- 获取长度和次数
- 字符串的大小写转换
- 字符串的填充
- 字符串的查找
- 字符串的提取
- 字符串的切割和合并
- 字符串的替换
- 字符串内容的判断
- 字符串的编码和解码
- ASCII码的转换
在Python中,字符串的定义是以单引号、双引号或者三个单引号、三个双引号包裹起来的文本
-
一个引号和三个引号的区别在于:三个引号可以输出多行数据,输出的时候也会按照多行的输入格式进行输出
-
在定义字符串中,单引号中只能使用双引号,双引号中只能使用单引号,若想使用需要用到转义字符
-
转义字符的作用是让符号失去其原本的意义
-
而在字符串前面添加r,则可以让原本的转义字符失去其作用,在定义文件路径时经常使用
-
在字符串前面添加f,则可以对字符串进行格式化输出
-
在字符串前面添加b,则是把字符串的类型转为bytes类型
-
在字符串前面添加u,这种方法常用于中文前面,表示对后面的内容以unicode的形式进行编码
代码示例:
# 创建字符串 s1 = '无法无天' s2 = "打游戏" s3 = ''' 床前明月光, 疑似地上霜。 ''' s4 = """ 举头望明月, 低头思故乡。 """ print(s1) print(s2) print(s3) print(s4) # 可以看出这三者定义字符串的区别
s1 = '小明喜欢"打游戏"'
print(s1)
# 转义字符
s2 = "我喜欢"看电视""
s3 = '你真'好看''
print(s2)
print(s3)
# r
s4 = r'hello n world'
s5 = 'hello n world'
print(s4)
print(s5)
# 可以看出r字符的作用
# f
name = '张三'
age = 20
info = f'我叫{name},今年{age}岁'
print(info)
# 通过f字符,进行格式化输出
# b
s6 = 'hello'
s7 = b'hello'
print(type(s6),type(s7))
# 两个变量的数据类型并不相同
# u
s8 = '我爱中国'
s9 = u'我爱中国'
print(s8)
print(s9)
字符串的格式化输出方式
- 上面有说到一个f字符,可以进行格式化输出
- 但Python不止这一种格式化输出的方式
- 除了f字符可以进行格式化输出之外,还有两种格式化输出的方式
- 一种是通过%,还有一种是通过format()方法
- 不过相对而言,还是f字符的使用较多
# %: 占位符
# %d:表示整数
# %s:表示字符串
# %f:表示小数
# %.2f:表示输出保留两位小数,具体保留多少可以自己控制
name = '张三'
money = 46483.12963
# 输出一
print(f'我叫{name},我有{money}块钱')
# 输出二
print('我叫%s,我有%.2f块钱'%(name,money))
# 输出三
print('我叫{},我有{}块钱'.format(name,money))
# 如果需要控制小数点的位数,可以这样
# 通过函数控制传入的参数
# 输出一
print(f'我叫{name},我有{round(money,2)}块钱')
# 输出三
print('我叫{},我有{}块钱'.format(name,round(money,2)))
字符串的常用操作
- 和字典、列表等一样,字符串一样有访问、切片、遍历、拼接、重复等常用操作
s1 = 'hey boy,hello world!'
# 字符串的访问同样是通过下标来对其中某个字符进行访问
print(s1[2])
# 遍历字符串
# 方法一
for i in s1:
print(i)
# 方法二
for j in range(len(s1)):
print(s1[j])
# 方法三
for index,s in enumerate(s1):
print(index,s)
# 切片
# [起始位置 : 结束位置 : 步长]
# 切片的操作方法都是统一的
print(s1[:5])
print(s1[::2])
print(s1[2:6])
# 成员运算符--in not in
print('abc' in s1)
print('boy' not in s1)
# 拼接
s2 = 'oh'
s3 = 'my god'
s4 = s2 + s3
print(s4)
# + 只有字符串进行拼接是,能使用 +
# 重复输出
print(s2 * 5)
字符串常用的函数
字符串中常用的功能函数,相对列表、字典等是比较多的
获取长度和次数- 获取字符串长度:len()
- 获取某个字符在字符串中出现的次数:count()
s1 = 'asdfrtyjnbvcxswertyuikjhgfrtyujhgfdcv'
# 计算s1的长度
print(len(s1))
# 统计字符'y'出现的次数
print(count('y'))
字符串的大小写转换
- upper()–小写转大写
- lower()–大写转小写
- swapecase()–大写转小写,小写转大写
- title()–单词的首字母大写
s1 = 'i love you' print(s1.upper()) s2 = 'HELLO WORLD' print(s2.lower()) s3 = 'Father And Monther' print(s3.swapecase()) s4 = 'please, will you marry me' print(s4.title())字符串的填充
- 字符串的填充效果分为:
- 左填充ljust()
- 右填充rjust()
- 0填充zfill()
- 左右填充center()
s = '我喜欢玩游戏' # ljust() # 使用'-'符号,将字符串s填充至长度为50 # ljust()--是讲字符串s放在左边进行填充 print(s.ljust(50,'-') # rjust() # 使用'-'符号,将字符串s填充至长度为50 # rjust()--是讲字符串s放在右边进行填充 print(s.rjust(50,'-') # zfill() # 从字符串s的最右边,以数字0进行填充,至长度为50 print(s.zfill(50)) # center() # 使用字符'*'将字符串s填充至长度为50 # 填充效果为左右两边均有字符'*' print(s.center(50,'*'))字符串的查找
- 字符串的查找函数,一般是找到需要查找字符出现的第一个位置
- 有find()、rfind()、index()、max()、min()
s = '14sdfgewrtynbv524863ertjnbv'
# find()
# 查找字符出现的第一个位置,如果没找到则返回-1
print(s.find('4'))
print(s.find('z'))
# 在指定区域内查找字符
# find(要查找的字符,开始位置,结束位置)
print(s.find('4',5,20))
# rfind()
# 查找字符出现的最后一次的位置,如果没找到则返回-1
print(s.rfind('n'))
print(s.rfind('z'))
# index()
# 功能与find()函数类似,不过找不到对应的字符则会报错
print(s.find('4'))
print(s.find('z'))
# max()、min()
# 是根据字符的ASCII码进行比较,找到ASCII码最大或者最小的结果
print(min(s))
print(max(s))
ASCII码
ASCII码的对照表可以查看这个网址
字符串的提取https://c.runoob.com/front-end/6318/
字符串提取的方法,可以理解成对字符串两边的内容进行去除一些无用的信息
比如去除空格,*、+等符号
- 具体的方法有:strip()、lstrip()、rstrip()
s1 = ' i am fine '
s2 = '****** i am fine*********'
# strip()
# 去除字符串两边指定的内容,默认为空格
print(s2.strip())
print(s1.strip('*'))
# lstrip()
# 去除字符串左边的指定内容
print(s2.lstrip('*'))
# rstrip()
# 去除字符串右边的指定内容
print(s2.rstrip('*'))
字符串的切割和合并
- 由于字符串定义的方法有一行定义和多行的定义,字符串的切割方法也有一行和多行的切割方法
- 字符串切割:split()、splitlines()
- 字符串合并:join()
# strip()
s1 = 'this is a nice sample????'
# 将字符串按照指定方法进行切割,默认是空格
print(s1.split(" "))
print(s1.split("i"))
# splitlines()
# 将字符串按行进行切割
s2 = '''床前明月光,
疑似地上霜。
举头望明月,
低头思故乡。
'''
print(s2.splitlines())
# join()
# 以指定内容进行拼接字符串
l1 = ['i', 'love', 'you']
print('-'.join(l1))
# 字符串的拼接不仅限于列表,拼接方法也不仅限于'-'
字符串的替换
- 字符串内容的替换常用方法是:replace(原内容,要替换的内容,替换次数)
- 替换次数参数,可不填,默认为全部替换
# replace()
s = '你这个东西真的好没有,太垃圾了,简直比垃圾还垃圾'
print(s.replace('垃圾','**')
print(s.replace('垃圾','**',2)
字符串内容的判断
- 字符串内容的判断方法有大小写判断、首字母大写判断和字符串组成判断
# isupper()--判断是否全是大写
print('ASFGFDR'.isupper())
print('asdfGHJee'.isupper())
# islower()--判断是否全是小写
print('sasgfdrfdc'.islower())
print('sfdGHJdfg'.islower())
# istitle()--判断单词首字母是否大写
print('i love you'.istitle())
print('I Love You'.istitle())
# isdigit()--检查字符串是否只由数字组成
print('4145256255'.isdigit())
print('asd4452'.isdigit())
# isalpha()--判断字符串是否只由字母和文字组成
print('as你好d552ASD'.isalpha())
print('你好dfgfd'.isalpha())
# 判断字符串的前缀和后缀内容
# startwith()--判断前缀
s = 'Hello World'
print(s.startwith('Hello'))
# endwith()--判断后缀
print(s.endwith('World'))
字符串的编码和解码
- 字符串的编码格式有多种:utf-8,gbk等都是不同的编码格式,编码结果都不相同
- encode():编码方式,可以通过传入编码格式的参数,控制编码方法
- decode():解码方式
# encode()
s1 = '世界,你好!'
print(s1.encode('utf-8'))
print(s1.encode('gbk'))
s2 = s1.encode('utf-8')
print(s2.decode())
ASCII码的转换
- chr():将ASCII码的值转为字符串内容
- ord():将字符串内容转为ASCII码
# chr() 将ASCII的值转换为对应的符号
print(chr(65)) # A
print(chr(43)) # +
# ord() 获取字符对应的ASCII的值
print(ord("Z")) # 90
print(ord("*")) # 42
ASCII码的查看,可以参考以下这个网址
https://c.runoob.com/front-end/6318/



