1、字符串打印
一对单引号(' ')、一对双引号(" ")、三对单引号(''' ''')、三对双引号(""" """)
str1 = '一对单引号'
str2 = "一对双引号"
str3 = '''三对单引号'''
str4 = """三对双引号"""
# 多种引号嵌套使用
print("""'''鲁迅说:"I'm a 周树人"'''""")
2、字符串索引
字符串索引分为:1、正数索引 2、负数索引
# 正数索引
str1 = '两个黄鹂叫喳喳.'
两 个 黄 鹂 叫 喳 喳 .
0 1 2 3 4 5 6 7
print(str1[2]) # 黄
# 负数索引
str2 = '一行白鹭齐刷刷.'
一 行 白 鹭 齐 刷 刷 .
-8 -7 -6 -5 -4 -3 -2 -1
print(str2[-6]) # 白
3、字符串切片
定义:按照规则获取字符串中一部分元素的方法叫做切片
切片格式:[起始位置: 结束位置: 步长]
起始位置: 切片开始位置的下标[包含]
结束位置: 切片结束位置的下标[不包含]
步长: 获取数据的间隔(后一个索引,减去前一个索引)
str1 = 'abcdef'
'''
a b c d e f
0 1 2 3 4 5
-6 -5 -4 -3 -2 -1
'''
# 获取abc
print(str1[0:3:1]) # abc 从下标为0的位置开始截取,到下标为3的位置终止,不包含3, 依次获取每一个元素
print(str1[-6:-3:1]) # abc 切片可以使用负数下标
4、find() 和 index()
1、 find()
find(self, sub, start, end)
self :可忽略不传,sub :字符或字符串,start :起始索引,end :结束索引
- 没有要查找的子字符串返回-1
- 查找到字符串返回第一个匹配字符串的位置
// 要查找当前字符串中chuanzhi的下标是什么
str1 = 'hello chuanzhi!!!!'
index = str1.find('chuanzhi', 0, 100)
print(index) # 6
# 注意: 如果查找的是字符串,则返回该字符串首字母在目标字符串中的索引值.
2、index()
index(self, sub, start, end)
self: 可以不传,sub:字符或字符串,start : 起始索引,end :结束索引
- 如果被查找的字符串不存在,则报错
- 查找到字符串时,返回第一个字母的位置
// 要查找当前字符串中chuanzhi的下标是什么
print(str1.index('chuanzhi')) # 6
# 指定字符串查找范围,该范围是左闭右开区间
# ValueError: substring not found 如果使用index 子字符串在目标字符串中未出现则报错
总结:
1、index 和 find 都是进行子字符串在目标字符串中从左至右第一次出现的位置索引查询
2.、index 和 find 都可以进行查找范围的指定,查找范围依然是左闭右开区间
3、index 中如果被查找的字符串不存在,则报错
4、find 中如果被查找的字符串不存在,则返回-1
5、当我们查找的是多个字符的子字符串时,只返回第一个字母的位置
5、replace()
replace(self, old, new, count)
self: 忽略不传,old:旧值,new:新值,count:替换次数
- 替换后,原始数据不发生变化,生成新的字符串数据
- 替换旧字符串在目标字符串中不存在时,不会报错,但是也不会替换
# 需求2: 将str1中从左至右第一个and 替换为 &&
str3 = str1.replace('and', '&&', 1)
print(str3)
6、split()
split(self, sep, maxsplit)
self: 忽略不传,sep:分割符,maxsplit:最大拆分次数
str1 = 'hello world and python'
# 需求1: 将str1 按照空格拆分为多个单词,放置在list中
str_list = str1.split(' ')
print(str_list) # ['hello', 'world', 'and', 'python']
# 设置最大拆分次数为2, 此时拆分为3份,并且是从左至右依次拆分的.
str_list = str1.split(' ', 2)
print(str_list) # ['hello', 'world', 'and python']
# 将str2 按照空白拆分为多个单词, 空白包括(空格, 制表位, 换行符)
str2 = 'hello world\tand\npython'
str_list2 = str2.split()
# 注意: 当split 中什么也不写时, 就是按照空白进行拆分,空白包括(空格, 制表位, 换行符)
print(str_list2) # ['hello', 'world', 'and', 'python']
# 将str3 按照 a 拆分为多个字符串
str3 = 'apple and banana'
# 注意: 按照哪一个字符或字符串进行拆分,则该字符或字符串将会消失
print(str3.split('a')) # ['', 'pple ', 'nd b', 'n', 'n', '']
print(str1.split('and')) # ['hello world ', ' python']
7、endswith()
endswith 是判断字符串是否以某个子字符串结尾的方法,返回值是布尔类型数据,可以作为判断条件使用
print(file_name.endswith('.txt'))
if file_name.endswith('.txt'):
print('该文件为txt文件格式')
else:
print('该文件格式错误')
8、count()
count就是用于查询目标字符串中有多少个指定子字符串的
# 注意: 查询子字符串数量时,可以约束起始和终止范围, 该范围为左闭右开区间.
str1 = 'hello python'
print(str1.count('o')) # 2
print(str1.count('n')) # 1
9、len()
len 是一个函数, 用来查询字符串中有多少个字符元素的,无论是空格还是换行符等,都计算元素数
str2 = '小明&&小刚 小丽\n小绿'
print(len(str2)) # 12 \n \t \001等都只占一个字符
print(str2.__len__()) # 12
10、strip()
去除字符串左右两侧的指定字符
str3 = ' 传智 博客 '
# 仅去除左右两侧的字符, 中间的字符不去除
print(str3.strip(' ')) # 传智 博客
str4 = ' \t传智 博客\n '
# 如果strip括号中什么也不写,则去除左右两侧的空白数据
print(str3.strip()) # 传智 博客
# 能理解即可
str5 = '123124124123传智 博客1231251231231'
print(str5.strip('1')) # 23124124123传智 博客123125123123
print(str5.strip('12')) # 3124124123传智 博客123125123123
print(str5.strip('1234')) # 传智 博客123125
print(str5.strip('12345')) # 传智 博客
11、join()
字符串的合并, 根据指定字符将列表中的字符串和并为一个字符串
str_list1 = ['hello', 'world', 'and', 'python']
str6 = '☆'.join(str_list1)
print(str6) # hello☆world☆and☆python
12、upper()、lower()
upper 将字符串转换为全大写
str1 = 'Hello wORLD!!'
# upper 将字符串转换为全大写
print(str1.upper()) # HELLO WORLD!!
# lower 将字符串转换为全小写
print(str1.lower()) # HELLO WORLD!!
13、title()
title 将每个单词的首字母大写,其余字母小写
# 注意: 判断是否为同一个单词的依据仅有一个, 只要是非字母数据就是分隔符
print(str1.title()) # Hello World!!
str2 = 'itcast传智xiaoming'
print(str2.title())
14、capitalize()
capitalize 整个字符串的首字母大写 其余均小写
print(str1.capitalize()) # Hello world!!
15、其他函数
isupper()、islower()、istitle()、isdecimal()、isdigit()、isnumeric()、isalnum()、isalpha()
isupper 判断字符串中是否均为大写
islower 判断字符串中是否均为小写
istitle 判断字符串中是否均首字母大写
isdecimal, isdigit, isnumeric 是判断字符串中是否为纯数字的.
isalnum 判断是否全部字符为数字或字母
isalpha 判断是否为纯字母