python3-字符串基本处理
基本功能处理:
- 转义
- 查找
- 格式化
- 分割
一、字符串转义和查找
import random
# 转义转义等基本操作 和字符串处理
"""
字符串保留区:
字符串常规操作
find: 从左向右查找,只要遇到符合要求的则返回位置,没有找到符合任何要求的则返回-1
rfind:从右向左
count:计数
index:表示查找,找不到会报错
rindex:
"""
# 字符串
s1 = 'hello'
print(s1)
# 获取内存地址
print(id(s1))
s2 = s1
print(s2)
print(id(s2))
s3 = 'hello'
print(s3)
print(id(s3))
print(s1, s2, s3)
# is 比较
s4 = 'hello1'
print(s1 is s4)
# s1 更改了地址指向,存的是地址
s1 = 'word'
print(s1, s2, s3)
# 字符串获取 截取
'''
字符串索引机制:
1. 0~len(s) -1
2. -len(s) ~ -1
'''
s1 = "abcdefg"
# 字符串索引
print(s1[4])
print(s1[-3])
# 字符串长度
print(len(s1))
'''
切片:字符串,列表
格式:字符串变量[start:end:step]
step 正数 从左向右
step 负数 从右向左
'''
s1 = "ABCDEFGH"
print(s1[1:4]) # BCD
print(s1[:5]) # 默认从0开始
# 输出EFGH
print(s1[4:len(s1)])
print(s1[4:]) # index 到尾
# 从头到位取数
print(s1[:])
print(id(s1)) # 地址一样
print(id(s1[:])) # 地址一样
# 去头去尾
print(s1[1:-1])
print(s1[1:])
# 步长:正数
print(s1[1: -1:2])
print(s1[1::2])
# 步长:负数
print(s1[::-2])
print(s1[::-1])
print(s1[1:-1:-2])
print(s1[-1:1:-2])
print(s1[-1::-2])
print(s1[1::-2])
print("常规操作-", "***" * 20)
'''
字符串常规操作
find: 从左向右查找,只要遇到符合要求的则返回位置,没有找到符合任何要求的则返回-1
rfind:从右向左
count:计数
index:表示查找,找不到会报错
rindex:
'''
path = "https://www.bilibili.com/video/BV1R7411F7JV?p=32&spm_id_from=pageDriver"
# find、index、rfind、rindex
# 从左向右
i = path.find('_')
print(i)
image_name = path[i + 1:]
print(image_name)
print("**" * 20)
# 从右向左
i = path.rfind('_')
image_name = path[i + 1:]
print(image_name)
# 查找path 中右几个_:count 指定字符的个数:
count = path.count("_")
print(count)
# index 未找到,报错:substring not found
# i = path.index("#") # 报错
i = path.index("pageDriver")
print(i)
print("判断操作-", "***" * 20)
'''
判断:startswith,endswith,isalpha,isdigit,isalnum,isspace
返回值都是布尔类型(True,False)
startswith:判断是以什么开头
endswith:以什么结尾
'''
result = path.startswith("http")
print(result)
'''
模拟文件上传,键盘输入上传文件的名称,判断文件名是否大于6位以上,扩展名是否是:jpg,gif,png格式
如果不是则提示上传失败,如果名字不满足条件,而扩展名满足条件则随机生成一个6位数字组成的文件名,打印成功上传xxx.png
注意:
+ 连接符:两边的类型必须一致
'''
file_name = input("请输入上传文件名:")
index = file_name.rfind(".")
name = file_name[:index]
suffix = file_name[index + 1:]
print(name, len(name), suffix)
suffixs = ["jpg", "gif", "png"]
if not suffixs.__contains__(suffix):
print("格式不对上传失败!")
else:
if len(name) > 6:
new_name = ""
i = 1
while i <= 6:
new_name += str(random.randint(0, 9))
i += 1
print(new_name)
print("新的文件全名", new_name + "." + suffix)
else:
print("文件全名", name + "." + suffix)
print("##" * 20, "代码重构", "##" * 20)
file_name = input("请输入上传文件名:")
index = file_name.rfind(".")
name = file_name[:index]
suffix = file_name[index + 1:]
print(name, len(name), suffix)
suffixs = ["jpg", "gif", "png"]
if not suffixs.__contains__(suffix):
print("格式不对上传失败!")
else:
if len(name) > 6:
name = str(random.randint(100000, 999999))
print(name)
print("新的文件全名", str(name) + "." + suffix)
print("文件全名", name + "." + suffix)
print("##" * 20, "代码重构:生成文件名带字母", "##" * 20)
file_name = input("请输入上传文件名:")
index = file_name.rfind(".")
name = file_name[:index]
suffix = file_name[index + 1:]
print(name, len(name), suffix)
suffixs = ["jpg", "gif", "png"]
if not suffixs.__contains__(suffix):
print("格式不对上传失败!")
else:
if len(name) > 6:
name = ''
while len(name) < 6:
index = random.randint(0, 122)
print("index->", index)
if 0 <= index <= 9:
name += str(random.randint(0, 9)) # 0-9数字
continue
if 65 <= index <= 90:
name += str(chr(random.randint(65, 90))) # 小写字母
continue
if 97 <= index <= 122:
name += str(chr(random.randint(97, 122))) # 大写字母
continue
print(name)
print("新的文件全名", str(name) + "." + suffix)
print("文件全名", name + "." + suffix)
二、字符串空白、数字大小写判断
# 字符串 处理
"""
isalpha(): 是否纯字母组成
isdigit():是否是纯数字组成
isalnum():是否是数字、字母组成;不能包含特殊符号
isspace():判断是否是空白
isupper(): 是否全是大写字母
islower():是否全是小写字母
"""
s = 'A12345'
m = 'ABCD'
n = '12345'
print(s.isalpha())
print(s.isdigit())
print(s.isalnum())
print(m.isalpha())
print(n.isdigit())
print(s.isspace())
print(m.isupper())
print(m.islower())
'''
练习:登录(admin123/18700191999 123456)
用户名或者手机号码输入:
输入用户名:长度大于6位,全部小写,首字母不能是数字;
手机号码:纯数字,11位;
密码:密码必须是6位数字
以上符合条件,则验证用户名加密码是否是正确的
'''
username = 'admin123'
phone = '18700191999'
pwd = '123456'
n = 2
while n >= 0:
login_type = input("请登录(登录方式: 1:手机号密码/ 2: 用户名密码):")
if login_type == '1':
name = input("请输入手机号:")
password = input("请输入密码:")
# 手机号密码登录
if name.isdigit() and len(name) == 11 and password.isdigit() and len(password) == 6:
if phone == name and pwd == password:
print("登录成功!")
break
else:
print("用户名或密码不对,还有%d次机会!" % n)
n -= 1
continue
else:
print("用户名/密码格式错误,还有%d次机会!" % n)
n -= 1
elif login_type == '2':
name = input("请输入用户名:")
password = input("请输入密码:")
# 用户名号密码登录
if name.islower() and len(name) > 6 and not name[0].isdigit() and password.isdigit() and len(password) == 6:
if username == name and pwd == password:
print("登录成功!")
break
else:
print("用户名或密码不对,,还有%d次机会!" % n)
n -= 1
continue
else:
print("用户名/密码格式错误,还有%d次机会!" % n)
n -= 1
continue
else:
print("输入类型有误,请重新输入")
三、字符串切割
# 字符串切割
"""
替换内容:replace(old、new、count)默认全部替换,也可以通过count 制定替换的次数
切割字符串:
split(分隔符,maxsplit): maxsplit 最大分隔次数
rsplit: 右切割
splitlines: 按照行切分
partition: 按照分隔符切换成三部分,包含分隔符
rpartition
修改大小写:
capitalize: 第一个字母转大写
title: 每个首字母带写
upper: 转大写
lower:转小写
"""
s = '张三说:王八蛋你来唱歌吧,王九蛋你来跳舞吧!'
# 替换王八蛋
result = s.replace('王八蛋', '***')
print(result)
# 替换王八蛋、 替换王九蛋 循环加里列表
result = s.replace('王九蛋', '***')
print(result)
lst = s.split(":")
print(lst)
s = '''aaaaaaaaaaaaaa
sssssssssssss
dddddddddddd
'''
result = s.splitlines()
print(result)
s = '张三说:王八蛋你来唱歌吧,王九蛋你来跳舞吧!'
result = s.partition(":")
print(result)
s = 'hello world!'
print(s.title())
print(s.capitalize())
四、字符串拼接
# 字符串拼接
"""
空格处理:
ljust: 左对齐
rjust:右对齐
center:对齐方式
lstrip:左侧空格去除
rstrip:右侧空格去除
strip: 处理空格(移除收尾空格)
字符串拼接:(处理列表)
join:
"""
username = input('用户名:')
print(len(username))
username = username.strip() # 处理前后空格
print(len(username))
username = username.lstrip() # 处理左侧空格
print(len(username))
username = username.rstrip() # 处理右侧空格
print(len(username))
s = 'hello world'
result = s.center(30) # 居中对齐
print(result)
result = s.ljust(30) # 左对齐
print(result)
result = s.rjust(30) # 右对齐
print(result)
result = '欢迎来到游戏世界'.center(30, '-')
print(result)
a = 'hello'
b = 'world'
result = '+'.join([a,b])
print(result)
五、字符串格式化
# 字符串格式化
"""
1. %d %s %f:
print('susan:%s' %sss)
2. format
"""
name = 'sandbox'
age = 18
result = '{}今年{}岁'.format(name, age) # 占位
print(result)
result = '{0}今年{1}岁,张三也{1}岁'.format(name, age) # 变量复用
print(result)
result = '{name}今年{age}岁,张三也{age}岁'.format(name='sandbox', age=18) # 变量名形式,参数名必须有关键字参数:name='sandbox'
print(result)
总结
以上就是python关于字符串方面的基本处理,本文仅仅简单介绍了python3的字符串处理函数的使用,而python3提供了大量能使我们快速便捷地处理数据的函数和方法。