一、字符串的定义
字符串是一种表示文本数据的数据类型。字符串的代码表示就是将字符串的内容用引号包围起来,并将其赋值给一个变量名。具体来说,可以使用单引号、双引号或三引号来表示字符串。
#单引号和双引号的作用是一样的,可以用来创建简单的字符串
string1 = 'Hello, world!'
string2 = "Hello, world!"
print(string1) #输出结果:Hello, world!
print(string2) #输出结果:Hello, world!
#如果字符串中包含了单引号或双引号,则可以使用其它类型的引号来创建字符串
string3 = "He said, 'I love Python.'"
string4 = 'She said, "Me too!"'
print(string3) #输出结果:He said, 'I love Python.'
print(string4) #输出结果:She said, "Me too!"
#可以使用三个单引号或三个双引号来表示多行字符串
string5="""
这是我的名片:
姓名:zqw
性别:女
籍贯:山东
"""
print(string5)
string的输出结果:
这是我的名片:
姓名:zqw
性别:女
籍贯:山东
二、字符串的常用操作
字符串的打印(输出)
使用 print() 函数来将字符串打印到控制台(也就是命令行窗口)上。
打印单行
#打印单行
print('Hello, world!') #输出结果:Hello, world!
#print() 函数可以接受多个参数,用逗号隔开,它们会依次按空格分隔打印出来。
name = '清微'
age = 25
print('我的名字叫', name, '我今年', age, '岁了。')
#输出结果:我的名字叫 清微 我今年 25 岁了。
打印多行
可以使用三个连续的单引号或双引号来表示多行字符串
card="""
名片
=============
姓名:清微
性别:女
职位:测试工程师
年龄:保密
微信:保密
=============
"""
输出结果:
名片
=============
姓名:清微
性别:女
职位:测试工程师
年龄:保密
微信:保密
=============
字符串的输入
使用 input() 函数来获取用户输入的内容。input() 函数会将用户在命令行窗口中输入的内容以字符串的形式返回给程序。
ps:input() 函数返回的是字符串类型的数据,所以如果需要对用户输入进行数值计算或其他操作,需要先对输入的内容进行类型转换。
卖橘子的计算器(字符串转化)
写一段代码,用户输入橘子的价格和重量,计算出应该支付的金额!(提示:不需要校验数据,默认传入数字就可以了。)
# 卖橘子的计算器
price=int(input("请输入橘子的价格:"))
weight=int(input("请输入橘子的重量:"))
pay=price*weight
print("你需要支付",pay,"元")
输出结果:
请输入橘子的价格:5
请输入橘子的重量:4
你需要支付 20 元
字符串的合并(拼接)
使用加号(+)拼接
#加号拼接
string1 = '不想'
string2 = '加班'
string3 = string1 + string2
print(string3) #不输出结果:想加班
使用 str.join() 方法实现拼接
# str.join() 拼接
year="2023"
month="04"
day="27"
string1='-'.join([year,month,day])
print(string1) #输出结果:2023-04-27
使用.f-string拼接(字符串的格式化(模板化))
#f-string拼接 +input函数的使用
#input() 是 Python 的一个内置函数,用于从标准输入(通常指命令行界面)中读取用户的输入,并以字符串的形式返回。
name=input("请输入姓名:")
salary=input("请输入薪资:")
string6=f"{name}收到了一个{salary}k的offer。"
print(string6)
输出结果:
请输入姓名:清微
请输入薪资:20
清微收到了一个20k的offer。
字符串的删除
使用 replace() 替换需要删除的字符或字符串为空字符串
#。replace()
a="花花草草真好看"
b=a.replace("草","")
print(b) #输出结果:花花真好看
使用切片操作(slice)删除指定位置的字符或字符串:
.strip():删除字符串左右两端的一种或多种字符
.lstrip():删除字符串左端的一种或多种字符
.rstrip():删除字符串右端的一种或多种字符
#.strip()
#删除字符串a两端的a或c
a="aabbbbcc"
b=a.strip("ac")
print(b) #输出结果:bbbb
#.lstrip()
c=a.lstrip("ac")
print(c) #输出结果:bbbbcc
#.rstrip()
d=a.rstrip("ac")
print(d) #输出结果:aabbbb
使用 del 语句删除字符串变量本身
s = "Hello, World!"
del s
print(s) # 输出结果:NameError: name 's' is not defined
删除原始字符串
ps:上述方法都不会真正地删除原始字符串,而是返回一个新的字符串。如果需要删除原始字符串,必须将其赋值为 None 或 ""。
s = "Hello, World!"
s = None # 删除原始字符串
print(s) # 输出结果: None
字符串的替换
方法:" .replace() "
格式:.replace(old,new,count),old指旧值,new指需要替换的新值,count指旧值需要替换的次数 。如果指定了可选参数count,则只有前count个出现的子串会被替换。如果没有指定count,则所有出现的子串都会被替换。
a="我想加班,我想加班,我想加班"
b=a.replace("加班","放假",2)
print(b) #输出结果:我想放假,我想放假,我想加班
字符串的查找
使用find()
find()方法返回子字符串第一次出现的起始位置(从左往右),如果找不到子串,则返回-1。可以指定查找的起始位置start和终止位置end。可以指定查找的起始位置start和终止位置end。
#find
a="我有一只非常可爱的小狗"
b=a.find("狗")
c=a.find("猫")
print(b) #输出结果:10(查找结果是其索引号)
print(c) #输出结果:-1
#指定位置,例如查第二位到最后一位
d=a[2:-1]
print(d) #输出结果:一只非常可爱的小
使用index
index()方法返回在字符串中第一次出现的起始位置。与find()方法不同的是,如果找不到子串,则会引发ValueError异常。可以指定查找的起始位置start和终止位置end。
#index
a="我有一只非常可爱的小狗"
b=a.index("狗")
c=a.index("猫")
print(b) #输出结果:10(查找结果是其索引号)
print(c) #输出结果:ValueError: substring not found
使用制表符
Python中,制表符通常使用\t来表示。可以在字符串中使用\t来插入一个制表符,在输出时会自动对齐到下一个制表符位置。
#\t
print("姓名\t年龄\t性别")
print("张三\t18\t男")
print("李四\t20\t女")
输出结果:
姓名 年龄 性别
张三 18 男
李四 20 女
使用换行符
在Python中,可以使用\n来表示一个换行符。可以在字符串中使用\n来插入一个换行符,在输出时会换行显示。
#\n
print("星期一\n星期二\n星期三\n星期四")
输出结果:
星期一
星期二
星期三
星期四
字符串的分割
可以使用split()方法来分割字符串。在Python中,split()方法是一个内置函数,用于根据指定的分隔符将字符串拆分为多个子字符串,并将这些子字符串存储在一个列表中。
#split()方法
time="2023-4-28"
print(time.split("-")) #输出结果:['2023', '4', '28']
字符串的长度
可以使用Python内置函数len()来求字符串的长度。对于一个字符串,len()会返回它包含的字符数量(即字符串长度)(len前面不能带“.”)
#字符串长度
a="祝各位五一快乐"
print(len(a)) #输出结果:7
#获取字符串的最后一位(总长度-1)
print(a[len(a)-1]) #输出结果:乐
字符串的格式化(模板化)
使用".format"
format() 使用花括号{} 作为占位符来表示要插入的变量或表达式,并使用 format() 函数来填充数据。
#.format进行模板化
name=input("请输入姓名:")
age=input("请输入年龄:")
position=input("请输入职位:")
money=input("请输入资产:")
#打印名片
card="""
名片
==============
姓名:{}
年龄:{}
职位:{}
资产:{}
==============
""".format(name,age,position,money)
print(card)
输出结果:
请输入姓名:清微
请输入年龄:20
请输入职位:自动化测试工程师
请输入资产:30w
名片
==============
姓名:清微
年龄:20
职位:自动化测试工程师
资产:30w
==============
使用f-string
在f-string中,可以直接在花括号{}内嵌入变量或表达式,而不需要使用format()函数来替换占位符。
#f-string进行模板化
name=input("请输入姓名:")
age=input("请输入年龄:")
position=input("请输入职位:")
money=input("请输入资产:")
#打印名片
card=f"""
名片
==============
姓名:{name}
年龄:{age}
职位:{position}
资产:{money}
==============
"""
print(card)
输出结果:
请输入姓名:清微
请输入年龄:18
请输入职位:测试工程师
请输入资产:20w
名片
==============
姓名:清微
年龄:18
职位:测试工程师
资产:20w
==============
字符串的索引Index
在Python中,可以使用方括号 [] 来按照索引访问序列类型对象中的元素。
索引的常用操作:
正向索引:从左到右,从0开始递增,最后一个元素索引为 len(s) - 1。可以使用正整数作为索引来访问序列中的元素。
#正向索引
a="祝大家五一放假快乐"
#访问第一个元素
print(a[0]) #输出结果:祝
#访问第4个元素
print(a[3]) #输出结果:五
#访问最后一个元素
print(a[-1]) #输出结果:乐
反向索引:从右到左,从-1开始递减,最后一个元素索引为 -1。可以使用负整数作为索引来访问序列中的元素。
#反向索引
a="祝大家五一放假快乐"
#访问最后一个元素
print(a[-1]) #输出结果:乐
#访问倒数第4个元素
print(a[-4]) #输出结果:放
索引超出范围, 会报错 IndexError: string index out of range
#超出索引范围
a="祝大家五一放假快乐"
print(a[20]) #输出结果:IndexError: string index out of rangeff
字符串的切片
在Python中,可以使用中括号 [] 和冒号 : 来进行切片操作。使用 s[start:stop:step] 的方式来截取其中一段子字符串。
start 表示截取的起始位置。如果未指定,默认为0。
stop 表示截取的结束位置(不包含)。如果未指定,默认为字符串的长度。
step 表示截取的步长。如果未指定,默认为1。
切片的注意事项
切片操作包含起始位置索引(左边界),但不包括结束位置索引(右边界)。
可以省略 start、stop 或 step 中的任意一个参数。如果省略 start,则默认从序列起始位置开始截取;如果省略 stop,则默认截取到序列末尾;如果省略 step,则默认每隔一个元素截取一次。
如果 start 或 stop 参数为负数,则表示从序列结尾处倒数计数。
step 参数可用于控制截取步长,可以是负数。
当使用切片操作时,不能越界访问序列,即 start 索引值不能小于0,stop 索引值不能大于序列长度。
如果使用切片操作访问的序列是不可变序列(如字符串),则切片操作返回一个新的序列对象;如果访问的序列是可变序列(如列表),则切片操作返回一个指向原始序列的引用。
#切片的示例
a="我真的非常不想上班呀"
# 从第2个字符(包含)开始到第6个字符(不包含)结束
print(a[1:6]) #输出结果:真的很不想
# 从第5个字符(包含)一直到字符串结束
print(a[4:]) #输出结果:常不想上班呀
# 从字符串开头一直到第5个字符(不包含)结束
print(a[:5]) #输出结果:我真的非常
# 每隔一个字符取一个字符
print(a[::2]) #输出结果:我的常想班
# 反向截取字符串
print(a[::-1]) #输出结果:呀班上想不常非的真我
切片如果超出范围, 不会报错,而是直接取到最后
# 切片如果超出范围, 不会报错,而是直接取到最后
print(a[1:20]) #输出结果:真的非常不想上班呀
修改字符串的大小写
title() 方法:将字符串中所有单词的首字母都大写,其他字母小写
capitalize() 方法:这个方法会让字符串的第一个字符大写,其他字符小写
upper() 方法可以将字符串中所有字符改为大写字母
lower() 方法可以将字符串中所有字符改为小写字母
#字符串的大小写
#title()
name="qing wei"
print(name.title()) #输出结果:Qing Wei
#capitalize()
print(name.capitalize()) #输出结果:Qing wei
#upper()
print(name.upper()) #输出结果:QING WEI
# lower()
print(name.lower()) #输出结果:qing wei