字符串
不可变类型
字符串的创建
字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ' 或 " ) 来创建字符串。创建字符串很简单,只要为变量分配一个值即可
name = "tom"
name1 = 'tom'
name2 = """tom"""
字符串的输入输出
输入
name = input() # input()无论输入的什么类型,返回的都是字符串
age = input("请输入你的年龄:") # 12
print(type(age)) # 结果为:str类型
格式化输出
name = "TOM"
age = 18
heigth = 180.5
print("我的名字是%s"%name)
print("我今年%d岁了"%age)
print("我的身高是%.2f"%heigth)
print("大家好,我叫{},我今年{}岁,我的升高是{}".format(name,age,heigth))
print(f"大家好,我叫{name},我今年{age}岁,我的身高是{heigth}")
字符串索引
“索引” ⼜叫**“下标”**,就是编号。⽐如⽕⻋座位号,座位号的作⽤:按照编号快速找到对应的座位。
字符串中一个元素一个索引,元素包括:字母,数字,符号,空格 索引顺序: 0 1 2 3 4 ... n -n-1 -n -n+1 -n+2 -n+3 ... -1
例:var="hello world"
print(var[1])
print(var[5])
print(var[-1])
#输出结果
>>>e
>>> # 空格
>>>d
切片
**切⽚是指对操作的对象截取其中⼀部分的操作。字符串、列表、元组都⽀持切⽚操作
不包含结束位置下标对应的数据, 正负整数均可; 步⻓是选取间隔,正负整数均可,默认步⻓为1
切片:var1[ 数字1:数字2 :步长] 数字2对应的元素不会取
name = "hello python"
print(name[2:5]) # 从2开始,到5结束(不会拿到5本身)
print(name[2:5:1]) # 从2开始,到5结束,步长为1(不会拿到5本身)
print(name[:5]) # 从0开始,下表为5结束(不会拿到本身)
print(name[1:]) # 从1开始,一直到结束
print(name[:]) # 拿取所有
print(name[::2]) # 从0开始,步长为2,拿取所有
print(name[:-1]) # 从0开始,到最后一个数结束(-1代表最后一个数,不包含-1本身)
print(name[-4:-1]) # 从倒数第四个开始,到倒数第一个结束(不包含-1本身)
print(name[::-1]) # 从-1开始,倒着打印字符串,步长为1
print(name[::-2]) # 从-1开始,倒着打印字符串,步长为2
print(var2[:-4:-1]) # 从-1开始到-4结束(不拿到本身))倒着打印字符串
常用字符串操作方法
查找;所谓字符串查找⽅法即是查找元素在字符串中的位置或出现的次数。
①find(): 检测某个元素是否包含在这个字符串中,如果在,返回这个字符串开始的位置下标,否则则返回-1
#字符串序列.find(⼦串, 开始位置下标, 结束位置下标)
#开始和结束位置下标可以省略,表示在整个字符串序列中查找
var2 = "hello and python and hello world"
print(var2.find("and")) # 返回首先找到的“and"的首字母的索引值
print(var2.find("and", 8, 20)) # 查找到下标(索引值)为8-20,and首字母下标
print(var2.find("gze")) # 若没有返回-1
② index() :检测某个元素是否包含在这个字符串中,如果在返回这个⼦串开始的位置下标,否则则报异常。
#用法与find()相同,只是在没查找到元素时,会报错
# 字符串序列.index(⼦串, 开始位置下标, 结束位置下标)
# print(var2.index("szhga")) # 报错
print(var2.index("and")) # 返回首先找到的“and"的首字母的索引值
print(var2.index("and", 8, 20)) # 查找到下标(索引值)为8-20,and首字母下标
③ count() :返回某个元素在字符串中出现的次数
# 字符串序列.count(⼦串, 开始位置下标, 结束位置下标)
var = "hello and python and hello world"
print(var.count("and")) # 查看在字符串var中,and出现了多少次
print(var.count("ands")) # 如果没有,则返回0次
print(var.count("and",8,20)) # 在一个区间内查找and出现的次数
修改
对字符串当中的内容进行修改
①replace():替换内容
#注意:替换次数如果超出⼦串出现次数,则替换次数为该⼦串出现次数
# 字符串序列.replace(旧⼦串, 新⼦串, 替换次数)
var = "hello and python and hello world"
print(var.replace("and","和")) # 将里面所有的and替换为和
print(var.replace("and","和",1)) # 将and替换为和,只替换一次
②split():切割字符串
# 字符串序列.split(分割字符, num)
#注意:**num表示的是分割字符出现的次数**
print(var.split(" ")) # split()返回的是列表类型
>>结果:['hello', 'and', 'python', 'and', 'hello', 'world']
print(var.split("and"))
>>结果:['hello ', ' python ', ' hello world']
print(var.split("and", 1))
>>结果:['hello ', ' python and hello world']
③- .join() :⽤⼀个字符或⼦串合并字符串,即是将多个字符串合并为⼀个新的字符串。
list1 = ["hello", "python", "i", "love", "you"]
t1 = ("hello", "python", "i", "love", "you")
set1 = {"hello", "python", "i", "love", "you"}
print("__".join(list1)) # 将列表转化为字符串,并且使用指定符号隔开
print(",".join(t1)) # 将元组转化为字符串,并且使用指定符号隔开
print("|".join(set1)) # 将集合转化为字符串,并且使用指定符号隔开
大小写转换
#capitalize() :将字符串第⼀个字符转换成⼤写
var = "hello and python and hello world"
print(var.capitalize()) # 将字符串第⼀个字符转换成⼤写。
#title()将字符串中的每个单词首字母变为大写
print(var.title())
#upper()将字符串全部转换为大写
print(var.upper())
#lower()将字符串全部转换为小写
print(var.lower())
# strip() 将字符串左右两侧空格删除
var1 = " hello python "
print(var1.strip())
判断
var = "hello python"
# startswith()判断字符串是否以指定元素开头
print(var.startswith("hello"))
print(var.startswith("and"))
print(var.startswith("and", 5, 10))
# endswith()检查字符串是否以指定元素结尾
print(var.endswith("python"))
print(var.endswith("and"))
print(var.endswith("th", 5, -2))
# isalpha()判断字符串是否全为字母
var2 = "hello"
print(var2.isalpha())
# isdigit():判断字符串是否都为数字
var4 = "123455"
print(var4.isdigit())
# isalnum()判断字符串是否只为字母和数字组成
var5 = "13235surges"
print(var5.isalnum())
# isspace() 判断字符串是否全为空格
var6 = " "
print(var6.isspace())
字符串运算
+ : 字符串中的加号,为合并、拼接的效果
a = '10'
b = '20'
print(a + b) # >>结果:1020
# in :在字符串里面
var6 = "hello"
print("h" in var6)
# not in :不在字符串里面
print("a" not in var6)
# r:取消转义符
print(r"hello \n python")
练习
练习一: 输入一个字符var1 = "hello python I love you", 将每个单词单独提取出来,并将首字母转化为大写(不能用title()方法
var1 = "hello python I love you"
list1 = var1.split(" ")
for data in list1:
print(data.capitalize(),end=" ")
练习二: 将字符串var2 = "1a2b3c4d5e6f"中的数字提取,并且累加
#方法一
var2 = "1a2b3c4d5e6f"
result = 0
for data in var2:
if data.isdigit():
result+=int(data)
print(result)
#方法二
var2 = "1a2b3c4d5e6f"
result = 0
for data in var2:
if data in "1234567890":
result+=data
print(result)