字符串
- 字符串是Python中最常用的数据类型。一般使用引号来创建字符串
- 使用单引号创建字符串
'hello'
- 使用双引号创建字符串
"hello"
- 使用六个单引号或六个双引号创建字符串
'''hello'''
或"""hello"""
- 使用六个引号创建的字符串,可以换行
- 字符串的数据类型
<class 'str'>
字符串的数据类型
a = 'hello world'
print(a)
print(type(a))
数据结果
hello world
<class 'str'>
六个引号包含的换行字符串
a = '''hello
world'''
print(a)
print(type(a))
输出结果
hello
world
<class 'str'>
单引双引号字符串换行
a = 'hello' \
'world'
print(a)
print(type(a))
输出结果
helloworld
<class 'str'>
- 单引号、双引号字符串换行需要使用
'\'
,并且只是代码换行,输出效果跟不换行是一样的 - 三引号写法,换行不需要添加额外的字符,并且输出也是换行的
字符串中带有引号的情况
字符串中带有单引号可以使用双引号或三引号包含,也可以使用转译字符\
a = "I'm Tom"
b = '''I'm Tom'''
c = """I'm Tom"""
d = 'I\'m Tom'
print(a)
print(b)
print(c)
print(d)
输出结果
I'm Tom
I'm Tom
I'm Tom
I'm Tom
字符串中带有双引号,可以使用单引号或三引号包含,也可以使用转译字符\
a = '"今天天气真好"'
b = '''"今天天气真好"'''
c = """"今天天气真"好"""
d = "\"今天天气真好\""
print(a)
print(b)
print(c)
print(d)
输出结果
"今天天气真好"
"今天天气真好"
"今天天气真"好
"今天天气真好"
- 当使用三引号包含的时候,结尾不可以四个相同引号都相连
"""今"天天气真好""""
,如果结尾四个相同的引号,需要使用转译字符"""今"天天气真好\""""
字符串中单引双引都有的情况,可以使用三引号包含,也可以使用转译字符\
a = '''"I'm Tom"'''
b = """"I'm Tom\""""
c = '"I\'m Tom"'
d = "\"I'm Tom\""
print(a)
print(b)
print(c)
print(d)
输出结果
"I'm Tom"
"I'm Tom"
"I'm Tom"
"I'm Tom"
字符串的输出
- 使用print直接输出字符串的数据
- 使用
%s
格式化输出字符串 - 使用
f
输出字符串
print('hello')
str1 = 'hello'
print('%s' % str1)
print(f'{str1}')
输出结果
hello
hello
hello
字符串的输入
- 在Python中使用
input()
接收用户输入
input('提示信息:')
- input返回一个字符串类型的数据
- 用户输入的数据默认是字符串类型
password = input("请输入密码:")
print(f'您输入的密码是{password}')
print(f'密码的数据类型是{type(password)}')
输出结果
请输入密码:123
您输入的密码是123
密码的数据类型是<class 'str'>
- input是阻塞式函数,等待用户输入后才继续执行
字符串的下标
-
下标
又叫索引
,就是编号。 - 下标的作用即是通过下标快速找到对应的数据
- 下标的索引时从0开始的
下标的使用
str1 = 'abcdefg'
print(str1)
print(str1[0])
输出结果
abcdefg
a
- 使用下标,可以精确的找到某个数据
切片
- 切片即是截取字符串中的子串
- 字符串、列表、元组都支持切片操作
序列[开始位置下标:结束位置下标:步长]
- 不包含结束位置下标对应的数据(左闭右开),正负整数均可
- 步长是选取间隔,正负数均可,默认步长为1
str1 = 'abcdefg'
# 整个字符串
print(str1)
# 只获取c,使用下标的方法,得到的是下标为某个数字的数据
print(str1[2])
# 得到abc,使用切片的方法截取
print(str1[0: 3])
输出结果
abcdefg
c
abc
开始、结束、步长为正数
str1 = '012345678'
# 截取234
print(str1[2: 5: 1]) # 截取起始下标为2,终止下标为5的区间范围,左闭右开
print(str1[2: 5]) # 默认步长是1,如果截取的步长为1,则可以省略
# 截取的步长为2
print(str1[2: 5: 2]) # 步长为2,结果为24
# 截取从开始下标,到下标为5的区间范围,01234
print(str1[0: 5]) # 起始下标为0,结束下标为5
print(str1[: 5]) # 如果起始位置是从0开始,可以省略不写
# 截取从下标2开始,到结束位置
print(str1[2: len(str1)]) # 截取从下标2开始到末尾
print(str1[2:]) # 如果截取到最后,结束下标可以省略不写
# 截取全部
print(str1[0: len(str1)]) # 从开始到最后
print(str1[:]) # 开始和结束都省略,默认是从开始到结束
输出结果
234
234
24
01234
01234
2345678
2345678
012345678
012345678
开始、结束为正数,步长为负数
str1 = '012345678'
print(str1[::-1]) # 步长为负数,表示倒序选取,从右往左选取
输出结果
876543210
开始、结束为负数,步长为正数
str1 = '012345678'
print(str1[-4:-1]) # 567,下标-1表示最后一个数据,依次向前类推
输出结果
567
开始、结束下标为负数,步长为负数
str1 = '012345678'
print(str1[-4:-1:-1]) # 什么都没有选取,-4到-1的选取范围是567,步长-1,是从右向左选取,故而什么都选取不到
输出结果
总结
- 步长为正数,表示从左到右选取数据
- 步长为负数,表示从右向左选取数据
- 如果开始下标 < 结束下标,步长为正数,可以选取到数据,步长为负数,选取不到数据
- 如果开始下标 > 结束下标,步长为负数,可以选取到数据,步长为正数,选取不到数据
- 选取方向和下方方向一致才能选取到数据
字符串查找
- 字符串的常用操作方法有查找、修改和判断
查找
find()、rfind()
- 所谓字符串查找方法即是查找子串在字符串中的位置或出现的次数
字符串序列.find(子串,开始位置下标,结束位置下标)
- find():检测字符串中是否包含某个子串,如果包含,返回这个子串开始位置的下标,否则返回-1
- 开始和结束位置可以省略,表示在整个字符串中查找
能找到,返回第一次出现的下标
str1 = 'ccabcsabc'
result = str1.find('abc')
print(result) # 2
输出结果
2
找不到,返回-1
str1 = 'ccabcsabc'
result = str1.find('abs')
print(result)
输出结果
-1
字符串序列.rfind(子串,开始位置下标,结束位置下标)
- rfind():同find(),查找方向从右向左查找
rfind():从右向左查找
str1 = 'ccabcsabc'
result = str1.rfind('abc')
print(result)
输出结果
6
index()、rindex()
字符串序列.index(子串,开始位置下标,结束位置下标)
- index():检测某个子串是否包含在这个字符串中,如果在,返回这个子串开始位置的下标,否则报异常
能找到,返回第一次出现的索引
str1 = 'ccabcsabc'
result = str1.index('abc')
print(result)
输出结果
2
找不到,报异常处理
str1 = 'ccabcsabc'
result = str1.index('abs')
print(result)
输出结果
Traceback (most recent call last):
File "/Users/apple/Desktop/code1/hello.py", line 2, in <module>
result = str1.index('abs')
ValueError: substring not found
字符串系列.rindex(子串,开始位置下标,结束位置下标)
- rindex():同index(),查找方向从右向左查找
从右向左查找
str1 = 'ccabcsabc'
result = str1.rindex('abc')
print(result)
输出结果
6
count()
- 返回某个子串在字符串中出现的次数
字符串序列.count(子串,开始位置下标,结束位置下标)
- 开始和结束位置下标可以省略,表示在整个字符串中查找
统计子串出现的次数
str1 = 'ccabcsabc'
result = str1.count('abc')
print(result)
输出结果
2
不存在,返回0
str1 = 'ccabcsabc'
result = str1.count('abs')
print(result)
输出结果
0
字符串修改
- 所谓修改字符串,指的就是通过函数的形式修改字符串中的数据
- 返回的都是一个新的字符串,原有字符串不变
- 字符串是不可变数据类型
替换replace()
字符串序列.replace(旧子串,新子串,替换次数)
- 从左到右依次使用新的子串替换旧的子串,替换指定的次数
- 替换次数如果> 子串出现的次数,则替换次数为该子串出现次数
- 替换次数可以不写,则默认替换所有
替换次数小于子串出现的次数
str1 = 'ssabcddabcrrabceeabc'
print(str1)
str2 = str1.replace('abc', '123', 2)
print(str2)
输出结果
ssabcddabcrrabceeabc
ss123dd123rrabceeabc
替换次数大于子串出现的次数
str1 = 'ssabcddabcrrabceeabc'
print(str1)
str2 = str1.replace('abc', '123', 5)
print(str2)
输出结果
ssabcddabcrrabceeabc
ss123dd123rr123ee123
分割
字符串序列.split(分割字符,num)
- split():按照指定字符分割字符串
- num是分割次数,分割后得到num+1个子串
- 如果num小于等于分割字符出现的次数,则分割次数为num
- 如果num大于分割字符出现的次数,则分割次数为分割字符出现的次数
- 分割后的子串不再包含分割字符
分割次数小于分割字符出现的次数
str1 = 'ssabcddabcrrabceeabc'
print(str1)
print(str1.split('abc',2))
输出结果
ssabcddabcrrabceeabc
['ss', 'dd', 'rrabceeabc']
分割次数大于分割字符出现的次数
str1 = 'ssabcddabcrrabceeabc'
print(str1)
print(str1.split('abc',8))
输出结果
ssabcddabcrrabceeabc
['ss', 'dd', 'rr', 'ee', '']
拼接
字符或子串.join(多字符串组成的序列)
- 使用字符或子串,拼接序列,形成一个新的字符串
list1 = ['aa', 'bb', 'cc', 'dd']
print(list1)
str1 = '***'.join(list1)
print(str1)
输出结果
['aa', 'bb', 'cc', 'dd']
aa***bb***cc***dd
首字母大写,其余字母小写
字符串.capitalize()
- 将字符串第一个字符转换成大写
- 只有第一个字符大写,其余全部转换成小写
str1 = "hello World.How are You"
print(str1)
print(str1.capitalize())
输出结果
hello World.How are You
Hello world.how are you
每个单词首字母大写
字符串.title()
- 将字符串每个单词首字母转换成大写
str1 = "hello World.How are You"
print(str1)
print(str1.title())
输出结果
hello World.How are You
Hello World.How Are You
大写转小写
字符串.lower()
-将字符串的所有字母都转换成小写字母
str1 = "hello World.How are You"
print(str1)
print(str1.lower())
输出结果
hello World.How are You
hello world.how are you
小写转大写
字符串.upper()
- 将字符串中所有字母都转换成大写字母
str1 = "hello World.How are You"
print(str1)
print(str1.upper())
输出结果
hello World.How are You
HELLO WORLD.HOW ARE YOU
去除左端空格
字符串.lstrip()
- 去除字符串左侧空白字符
str1 = " hello World.How are You "
print(str1)
print(str1.lstrip())
输出结果
hello World.How are You
hello World.How are You
去除右端空格
字符串.rstrip()
- 去除字符串右侧空白字符
str1 = " hello World.How are You "
print(str1)
print(str1.rstrip())
输出结果
hello World.How are You
hello World.How are You
- 输出结果第一行右侧有空白字符,第二行没有
去除两端空格
字符串.strip()
- 去除字符串两端的空白字符
str1 = " hello World.How are You "
print(str1)
print(str1.strip())
输出结果
hello World.How are You
hello World.How are You
返回一个指定长度左对齐的字符串
字符串.ljust(长度,填充字符)
- 填充字符可以不写,默认空字符
- 将字符串扩充到指定长度,右侧补充设置的填充字符
- 如果设置的字符串长度小于字符串的长度,则原样输出
str1 = "abc"
print(str1)
print(str1.ljust(7, '*'))
输出结果
abc
abc****
返回一个指定长队右对齐的字符串
字符串.rjust(长度, 填充字符)
- 填充字符可以不写,默认空白
- 将字符串扩充到指定长度,左侧补充设置的填充字符
- 如果设置的长度小于原字符串的长度,则原样输出
str1 = "abc"
print(str1)
print(str1.rjust(7))
输出结果
abc
abc
返回一个指定长度居中对齐的字符串
字符串.center(长度,填充字符)
- 填充字符可以不写,默认空白字符
- 将字符串扩充到指定长度,两端补充设置的填充字符
- 如果设置的长度小于原字符串的长度,则原样输出
str1 = "abc"
print(str1)
print(str1.center(7,"*"))
输出结果
abc
**abc**
字符串判断
- 所谓判断即是判断真假,返回的结果是布尔型数据类型:True或False
判断是否以指定子串开头
字符串序列.startswith(子串,开始下标,结束下标)
- startswith():检查字符串是否以指定子串开头,是返回True,否则返回False
- 如果不设置开始和结束下标,默认是整个字符串
- 设置开始和结束下标,则是开始和结束下标内的指定区间
str1 = "hello world"
print(str1)
print(str1.startswith('hello'))
print(str1.startswith('holl'))
输出结果
hello world
True
False
判断是否以指定子串结尾
字符串.endswith(子串,开始下标,结束下标)
- endswith():检查字符串是否以指定子串结尾,是则返回True,否则返回False
- 如果不设置开始和结束下标,默认是整个子串
- 设置开始和结束下标,则是开始和结束下标区间内的指定区域
str1 = "hello world"
print(str1)
print(str1.endswith('world'))
print(str1.startswith('woold'))
输出结果
hello world
True
False
判断是否全部由字母组成
字符串.isalpha()
- 如果字符串全部是由字母组成,返回True,否则返回False
str1 = "hello world"
str2 = 'hello'
print(str1.isalpha())
print(str2.isalpha())
输出结果
False
True
判断是否全部由数字组成
字符串.isdigit()
- 如果字符串全部是由数组组成,返回True,否则返回False
str1 = '123'
str2 = '123abc'
str3 = 'a bc'
print(str1.isdigit())
print(str2.isdigit())
print(str3.isdigit())
输出结果
True
False
False
判断是否全部由数组或字母组成
字符串.isalnum()
- 如果字符串中只包含数字和字母,返回True,否则返回False
str1 = 'abc'
str2 = '123'
str3 = '123abc'
str4 = '123 abc'
str5 = '123$abc'
print(str1.isalnum())
print(str2.isalnum())
print(str3.isalnum())
print(str4.isalnum())
print(str5.isalnum())
输出结果
True
True
True
False
False
判断是否只包含空白字符
字符串.isspace()
- 如果字符串中只包含空白字符,返回True,否则返回False
- 空字符串,返回False,字符串要有长度
str1 = ''
str2 = ' '
str3 = ' abc '
print(str1.isspace())
print(str2.isspace())
print(str3.isspace())
输出结果
False
True
False
网友评论