1. 字符串
文章目录
- 1. 字符串
- 1.1 定义
- 1.2 独有功能(18/48)
- 1.2.1 判断是否以某个字符串开头,返回布尔值(startswith)
- 1.2.2 判断是否以某个字符串结尾,返回布尔值(endswith)
- 1.2.3 判断一个字符串是否是一个整数,返回布尔值(isdecimal)
- 1.2.4 去除字符串两边的空格、换行符、制表符,得到一个新字符串(strip、lstrip、rstrip)
- 1.2.5 字符串中的字母变成大/小写,得到一个新字符(upper、lower)
- 1.2.6 字符串内容替换(replace)
- 1.2.7 字符串的切割(split)
- 1.2.8 字符串的拼接,得到新的字符串(join)
- 1.2.9 格式化字符串,得到新的字符串(format)
- 1.2.10 字符串转换为字节类型(encode、decode)
- 1.2.11 将字符串内容居中、居左、居右显示(centet、ljust、rjust)
- 1.2.12 帮助填充0(zfill)
- 练习题
- 1.3 公共功能
- 1.4 转换
- 1.5 其他
字符串,文本信息。
1.1 定义
V1 = "李四"
V2 = "ABC"
V3 = """
我是李四
我是李四
我是李四
"""
1.2 独有功能(18/48)
"***".功能(...)
V1 = "李四"
V1.功能(...)
1.2.1 判断是否以某个字符串开头,返回布尔值(startswith)
v1 = "我的名字是,李四"
result = v1.startswith("我的")
print(result)
#True
#案例
v1 = input("请输入住址: ")
if v1.startswith("北京市"):
print("北京人口")
else:
print("非北京人口")
1.2.2 判断是否以某个字符串结尾,返回布尔值(endswith)
v1 = "我的名字是,李四"
result = v1.endswith("李四")
print(result)
#True
#案例
v1 = input("请输入来自: ")
if v1.endswith("北京"):
print("北京人口")
else:
print("非北京人口")
1.2.3 判断一个字符串是否是一个整数,返回布尔值(isdecimal)
v1 = "122"
result = v1.isdecimal()
print(result)
#True
#案例
v1 = input("请输入值:")
v2 = input("请输入值:")
if v1.isdecimal() and v2.isdecimal():
data = int(v1) + int(v2)
print(data)
else:
print("请正确输入数字")
v1 = "123"
print(v1.isdecimal())# True
v2 = "①"
print(v2.isdecimal())# False
v3 = "①"
print(v2.isdigit())# True
#判断整数时,使用isdecimal
1.2.4 去除字符串两边的空格、换行符、制表符,得到一个新字符串(strip、lstrip、rstrip)
user_input = input("请输入:")# 前边有空格
print(user_input)
message = " oh,Ross "
result=message.strip()
print(result)
#oh,Ross
message = " oh,Ross "
result=message.lstrip()
print(result)
# oh,Ross
message = " oh,Ross "
result=message.rstrip()
print(result)
#oh,Ross
#案例
code = input("请输入4位验证码:")
data = code.strip()
if data == "FB87":
print("验证码正确")
else:
print("验证码错误")
- 去除字符串两边的换行符、制表符同理。
message = """
oh,Ross
jack
"""
print(message.strip())
print(message)
#
oh,Ross
jack
oh,Ross
jack
- 同时strip还可以去除字符串两边的指定字符
- lstrip与rstrip同样
message = "我是John,Jack不是我"
print(message)
print(message.strip("我"))
print(message.lstrip("我"))
#我是John,Jack不是我
#是John,Jack不是
#是John,Jack不是我
1.2.5 字符串中的字母变成大/小写,得到一个新字符(upper、lower)
message = "my name is ken"
data = message.upper()
print(message)
print(data)
#my name is ken
#MY NAME IS KEN
message = "MY NAME IS KEN"
data = message.lower()
print(message)
print(data)
#MY NAME IS KEN
#my name is ken
#案例
code = input("请输入4位验证码:")
value = code.upper()#输入验证码时存在输入时是小写的情况
data = value.strip()#同上去除空格
if data == "FB87":
print("验证码正确")
else:
print("验证码错误")
#方法执行后不会改变变量的原有值
1.2.6 字符串内容替换(replace)
data = "我是你爸爸,你爸爸是我"
value = data.replace("爸爸","妈妈")
print(data)
print(value)
#我是你爸爸,你爸爸是我
#我是你妈妈,你妈妈是我
#案例
content = input("请输入评论信息")
content = content.replace("艹","*")
content = content.replace("泥马","**")
print (content)
char_list =["草拟吗","逗比","二蛋","钢球"]
content = input("请输入评论信息")
for item in char_list:
content = content.repalce ( item, "**")
1.2.7 字符串的切割(split)
- 主要是根据特定的字符串进行切割
- 结果保存在列表中
- 默认切割整个字符串
data = "姓名:李四,性别:男,爱好:无,身高:18厘米"
result = data.split(",")
print(data)
print(result)
#姓名:李四,性别:男,爱好:无,身高:18厘米
#['姓名:李四', '性别:男', '爱好:无', '身高:18厘米']
- 也可以指定切割的列表元素个数(从前向后)
data = "姓名:李四,性别:男,爱好:无,身高:18厘米"
result = data.split(",", 1)
print(data)
print(result)
#姓名:李四,性别:男,爱好:无,身高:18厘米
#['姓名:李四', '性别:男,爱好:无,身高:18厘米']
- 也可以从后向前切割
data = "姓名:李四,性别:男,爱好:无,身高:18厘米"
result = data.rsplit(",", 1)
print(data)
print(result)
#姓名:李四,性别:男,爱好:无,升高:18厘米
#['姓名:李四,性别:男,爱好:无', '升高:18厘米']
#案例
info = "admin,root"
user_list = info.split(",")
user_name = input("请输入用户名:")
user_pwd = input("请输入密码:")
if user_name == user_list[0] and user_pwd == user_list[1]:
print("sucessful")
else:
print("fail")
1.2.8 字符串的拼接,得到新的字符串(join)
data_list = ["李四","身高","18厘米"]
v1 = ",".join(data_list)
print(data_list)
print(v1)
#['李四', '身高', '18厘米']
#李四,身高,18厘米
1.2.9 格式化字符串,得到新的字符串(format)
name = "大家好,我叫{0},我的爱好是{1}、{2}、{3}"
data = name.format("坤坤","唱","跳","rap")
print(name)
print(data)
#{0}的爱好有很多。如:{1}、{2}、{3}
#坤坤的爱好有很多。如:唱、跳、rap
message = "大家好,我叫{name},我的爱好是{v1}、{v2}、{v3}"
message1 = message.format("坤坤","唱","跳","rap")
print(name)
print(data)
#{0}的爱好有很多。如:{1}、{2}、{3}
#坤坤的爱好有很多。如:唱、跳、rap
1.2.10 字符串转换为字节类型(encode、decode)
data = "一个小目标"
v1 = data.encode("utf-8")#utf-8字节类型
v2 = data.encode("gbk")#
print(data)
print(v1)
print(v2)
#一个小目标
#b'\xe4\xb8\x80\xe4\xb8\xaa\xe5\xb0\x8f\xe7\x9b\xae\xe6\xa0\x87'
#b'\xd2\xbb\xb8\xf6\xd0\xa1\xc4\xbf\xb1\xea'
r=v1.decode("utf-8")
print(r)
r2=v2.decode("gbk")
print(r2)
#一个小目标
#一个小目标
1.2.11 将字符串内容居中、居左、居右显示(centet、ljust、rjust)
v = "here is johnny"
data = v.center(30,"-")#居中
data1 =v.rjust(30,"-")#居右
data2 =v.ljust(30,"-")#居左
print(v)
print(data)
print(data1)
print(data2)
#here is johnny
#-------here is johnny--------
#---------------here is johnny
#here is johnny---------------
1.2.12 帮助填充0(zfill)
msg = "johnny"
data = msg.zfill(15)
print(msg)
print(data)
#johnny
#000000000johnny
#应用场景处理二进制数据
data ="100"
data1 = data.zfill(8)
print(data1)
练习题
练习题
1.写代码实现判断用户输入的值否以"ai"开头,如果是则输出"是的”否则输出“不是的"
user_input = input("请输入ai数据:")
if user_input.startswith("ai"):
print("是的")
else:
print("不是的")
2.写代码实现判断用户输入的值否以"“Nb"结尾,如果是则输出"是的”否则输出"不是的”
user_input = input("请输入ai数据:")
if user_input.endswith("Nb"):
print("是的")
else:
print("不是的")
3.将name变量对应的值中的所有的"|“替换为“p”,并输出结果
name = "偶|系|你|老|豆"
data = name.replace("|","p")
print(name)
print(data)
#偶|系|你|老|豆
#偶p系p你p老p豆
4.写代码实现对用户输入的值判断,是否为整数,如果是则转换为整型并输入,否则直接输出"请输入数字"
value = input("请输入数字:")
data = value.isdecimal()
while True:
if data:
int(value)
print(value)
break
else:
value = input("请输入数字:")
data = value.isdecimal()
5.对用户输入的数据使用"+""切割,判断输入的值是否都是数字?
提示:用户输入的格式必须是以下+连接的格式,如5+9 、alex+999
msg = input("请输入数字,(以+连接)")
value = msg.split("+",1)
if value[0].isdecimal() and value[1].isdecimal():
print("都是数字!")
else:
print("不都是数字!")
6.写代码实现一个整数加法计算器(两个数相加)
需求:提示用户输入∶5+9或5+9或5+9,计算出两个值的和(提示∶先分割再转换为整型,再相加)
value = input("请输入加法计算式:(x+y)")
value_list = value.split("+")
if value_list[0].isdecimal() and value_list[1].isdecimal():
v1 = int(value_list[0])
v2 = int(value_list[1])
result = v1 + v2
print(result)
else:
print("不都是数字!")
7.写代码实现一个整数加法计算器(两个数相加)
需求︰提示用户输入∶5+9或5+9或5+9,计算出两个值的和(提示∶先分割再去除空白、再转换为整型,再相加)
value = input("请输入加法计算式:(x+y)")
value_list = value.split("+")
v1 = value_list[0].strip()
v2 = value_list[1].strip()
if v1.isdecimal() and v2.isdecimal():
result = int(v1)+ int(v2)
print(result)
else:
print("不都是数字!")
print(v1)
8.补充代码实现用户认证。
需求︰提示用户输入手机号、验证码,全都验证通过之后才算登录成功(验证码大小写不敏感)
import random
code = random.randrange(1000,9999)#生成动态验证码
code = str(code)
msg = "欢迎登录PythonAv系统,您的验证码为:{},手机号为:{}".format(code, "15131266666")
print (msg)
print(code)
#请补充代码
user_phone = input("请输入手机号:")
user_num = input("请输入验证码:")
while True:
if user_phone == "15131266666" and user_num.upper() == code.upper():
print("登录成功")
break
else:
print("登陆失败")
user_phone = input("请输入手机号:")
user_num = input("请输入验证码:")
9.补充代码实现数据拼接
data_list =[]
while True:
hobby = input("请输入你的爱好(Q/q退出): ")
if hobby.upper() == 'Q':
break
#把输入的值添加到 data_list 中,如: data_list =["小姨子"。"哥们的女朋友"]
data_list.append(hobby)
#将所有的爱好通过符号"、"拼接起来并输出
msg = "、".join(data_list)
print(msg)
1.3 公共功能
1.3.1 相加:字符串+字符串
v1 = "alex" + "beautiful"
print(v1)
1.3.2 相乘:字符串*整数
data = "SB" *3
print(data)
1.3.3 长度
data1 = "服了你个老六"
value = len(data1)
print(data1)
print(value)
1.3.4 获取字符串中的字符
message = "你可真是个老六"
i = 0
while i<7 :
print(message[i])
i=i+1
print(message)
# 你
# 可
# 真
# 是
# 个
# 老
# 六
# 你可真是个老六
message = "你可真是个老六"
i = 0
while i<len(message) :
print(message[i])
i=i+1
print(message)
# 你
# 可
# 真
# 是
# 个
# 老
# 六
# 你可真是个老六
- 通过索引获取的字符串值,不能修改,智能获取
message = "你可真是个老六"
i = len(message)-1
while i>=0 :
print(message[i])
i=i-1
print(message)
# 六
# 老
# 个
# 是
# 真
# 可
# 你
# 你可真是个老六
1.3.5 切片,获取字符串中的某一部分字符串(子串)
message = "你可真是个老六"
print(message[0:3])
print(message[5:7])
print(message[:5])
print(message[5:])
#你可真
#老六
#你可真是个
#老六
print(message[2:-2])
#真是个
print(message[2:len(message)])
#真是个老六
- 只能读取不能修改
1.3.6 步长
message = "生活就像一盒巧克力,你永远不知道下一颗是什么味道"
print(message[0:5:1])
#输出:生活就像一,【前两个表示序列区间,最后一个值表示步长(取值间隔),步长默认为1】
print(message[:10:2])
#输出:生就一巧力,【第一个值不写的话默认为从0开始】
print(message[2::4])
#输出:就巧你知颗味,【第二个值不懈的话默认到字符串末尾结束】
print(message[::3])
#输出:生像巧,远道颗么,【前两个值都空白即区间范围不写,表示整个字符串】
print(message[24:5:-1])
#输出:道味么什是颗一下道知不远永你,力克巧,【倒序,前取后不取】
print(message[-1:1:-1])
#道味么什是颗一下道知不远永你,力克巧盒一像就
print(message[::])
#生活就像一盒巧克力,你永远不知道下一颗是什么味道
#面试题:给出一个字符串,请将字符串反转
print(message[len(message)::-1])
print(message[-1::-1])
print(message[::-1])
#道味么什是颗一下道知不远永你,力克巧盒一像就活生
#道味么什是颗一下道知不远永你,力克巧盒一像就活生
#道味么什是颗一下道知不远永你,力克巧盒一像就活生
1.3.7 循环
message = "生活就像一盒巧克力,你永远不知道下一颗是什么味道"
#while
i = 0
while i<len(message):
print(message[i])
i+=1
print("---------------")
#for
for char in message:
print(char)
- range
message = "生活就像一盒巧克力,你永远不知道下一颗是什么味道"
range(10)
range(1,10)#前取后不取
range(1,10,2)#1.3.5.7.9
range(10,1,-1)#10.9.8.7.6.5.4.3.2.1
for i in range(10):
print(i)
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
for i in range(len(message)):
print(message[i])
# 生
# 活
# 就
# 像
# 一
# 盒
# 巧
# 克
# 力
# ,
# 你
# 永
# 远
# 不
# 知
# 道
# 下
# 一
# 颗
# 是
# 什
# 么
# 味
# 道
- while 一般应用在无限制,循环次数未知时的情况
- for循环一般应用在已知的循环数量的情况下
1.4 转换
num = 999
value = str(num)
print(value)
#"999"
data_list = {"hohn","nidei",12}
value = str(data_list)
#{12, 'hohn', 'nidei'}
1.5 其他
- 字符串创建以后不可修改
- 我们所做的一系列的操作只是在原字符串的基础上修改后新创建了一个数据接收,源数据不发生改变