字符串是Python中最常用的数据类型,我们一般使用引号来创建字符串,并且字符串是不可变的。
实例:
# 字符串可以双引号,单引号以及三引号都可以创建
str1 = "hello world"
str2 = 'hello world'
# 三引号可以支持回车换行
str3 = '''hello
111world'''
str4 = """hello
world"""
print(type(str1))
print(type(str2))
print(type(str3))
print(str3)
print(type(str4))
print(str4)
打印str1类型就是字符串
下标指的就是字符串的单个字符的索引的意思,下标从0开始,现在想拿到下标为1个字符
str1 = "hello world"
print(str1[1])
字符串、列表、元组都支持切片操作,主要是在对象中截取一部分元素的操作
序列切片语法:序列[开始下标位置:结束下标位置:步长]
步长:步长的意思就是选取数据的间隔,默认为1,如果为负数,那么就是从后往前面开始截取,也就是有一个倒序开始截取
正数步长操作
str1 = "0123456789"
print(str1[2:11:1]) # 23456789
print(str1[2:11]) # 23456789
print(str1[2:11:2]) # 2468
print(str1[:11:2]) # 02468
print(str1[::2]) # 02468
print(str1[2::]) # 23456789
注意:截取的数据是不包含结束位置下标的数据
str1 = "0123456789"
# 这个开始位置就从9开始截取
print(str1[11:0:-1]) # 9876543210
print(str1[8:3:-1]) # 87654
print(str1[-5:-1]) # 5678
注意:如果选取方向(下标开始到结束的方向)和步长的方向冲突,将无法截取数据
常用操作方法
find():监测某个子串是否包含在这个字符串中,如果存在将返回下标位置,不存在则返回-1
语法:字符串.find(字符串,开始下标位置,结束下标位置)
注意:开始下标和结束下标的位置如果省略就表示在整个字符串中查找
index() 与上面的find()操作一致,只是没有找到将会抛出异常
str1 = "我是python"
print(str1.find("py")) # 查找的下标为2
print(str1.find("py" , 1 , 8)) # 查找的下标为2
print(str1.index("py" , 1 , 8)) # 查找的下标为2
print(str1.index("py1")) # 此代码运行报错
count() 操作方式与上面一致,没有则返回0
# count() 统计次数
str1 = "我是python,python可以做很多东西,你喜欢python吗"
print(str1.count("python")) # 查找的统计为3
rfind()用法与上面一致,找不到则返回-1
# rfind(),返回最后一个出现的位置下标
print(str1.rfind("python")) # 查找的统计为26
replace()替换字符串
字符串.replace(旧子串,新子串,替换次数)
注意:替换次数如果查找到子串出现的次数,则替换次数为该子串出现的次数,默认替换所有
str1 = "我是Java,Java可以做很多东西,你喜欢Java吗"
new_str1 = str1.replace("Java" , "python")# 修改所有java子串
print(new_str1)
new_str2 = str1.replace("Java" , "python",1)# 只修改一次java子串
print(new_str2)
split(分割符,分割次数[可以省略])
分割,返回一个列表,但是分割符会丢失
str1 = "0 python1 python2 python3 python4 python5"
list1 = str1.split("python")# 默认分割所有
print(list1)
list2 = str1.split("python" , 1)# 数值为1将只分割一次
print(list2)
Join将序列中的多个字符串,合并成一个字符串
语法:任意字符串.join(多字符串组成的序列)
# join
list1 = ['0', '1', '2', '3', '4', '5']
str1 = "-".join(list1)
print(str1)
一些不常用的字符串函数
str1 = " python python python python "
# capitalize将第一个字符大写
print(str1.capitalize())
# title() 将所有的单词首字符大写
print(str1.title())
# lower() 将所有字符转成小写
print(str1.lower())
# upper 将所有字符转成大写
print(str1.upper())
# lstrip 删除左则空字符,rstrip 删除右侧空字符
print(str1.lstrip().rstrip())
# strip删除2侧空字符
print(str1.strip())
ljust不够10个字符使用点来填充左对齐
rjust不够10个字符使用点来填充右对齐
判断子串是否在字符串中开头或者结尾
str1 = "pythonwqewqrwqrqwrerewdsfgdsfghello"
# 字符串.startswith(子串,开始位置,截止位置) 判断该子串是否在字符串开始位置
print(str1.startswith("python"))
# 字符串.endswith(子串,开始位置,截止位置) 判断该子串是否在字符串结尾位置
print(str1.endswith("hello"))
isalpha/isdigit/isalnum/isspace
isalpha判断是否是字符串中所有的字符是不是字母,如果不是全部字母返回False
isdigit判断字符串中是不是只包含数字,如果是则返回True
isalnum只要字符中包含数字即返回True
isspace 判断是否全部是空字符
str1 = "hello1234"
str2 = "hello"
# isalpha判断是否是字符串中所有的字符是不是字母,如果不是全部字母返回False
print(str1.isalpha())
print(str2.isalpha())
# isdigit判断字符串中是不是只包含数字,如果是则返回True
str3 = "44444"
print(str3.isdigit())
# isalnum只要字符中包含数字即返回True
print(str1.isalnum())
# isspace 判断是否全部是空字符
str4 = " "
print(str4.isspace())
END