字符串的相关操作

“”“字符串的驻留机制(满足一种即可)
字符串的长度为0/1时
符合标识符的字符串
字符串只在编译时进行驻留,而非运行时(运行后才相等的为False)连接字符串建议使用join()函数
[-5,256]之间的整数数字”""
强制驻留**sys

import sys
a='abc%'
b='abc%'
a=sys.intern(b)#强制驻留
print(a is b)

#字符串的查找
index()查找第一次出现,没有则报错
rindex()查找最后一次出现,没有报错
find()查找第一次出现的,没有则返回-1
rfind()查找最后一次出现的,没有则返回-1
count(str,beg=0,end=len(string))表示str在string里面出现的次数,beg和end指定范围

s='hello,hello'
print(s.index('lo'))
print(s.find('lo'))#建议使用find()不会报错
print(s.rindex('lo'))
print(s.rfind('lo'))

#字符串中的大小写转换
lower()小写 upper()大写
swapcase()大小写转换
title() 每个单词首字母转为大写
capitalize())第一个字符转换为大写,其余为小写

s='Hello,Python'
a=s.upper()#变成大写后,会产生一个新的字符串对象
print(a,id(a),s,id(s))
print(s.lower(),id(s.lower()))#本身是小写,但id改变了
print(s,id(s))
print(s.swapcase())#大小写转换
print(s.title())#首字母转为大写(每个单词)
print(s.capitalize())#第一个字符转换为大写,其余为小写

案例:验证码

s='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'
print(len(s))
code=''
import random
for i in range(4):
    ran=random.Random(0,len(s)-1)
    s[ran]+=s[ran]
print('验证码'+code)
user_input=input('请输入验证码:')
if user_input.lower==code.lower():
    print('验证码输入正确!')
else:
    print('验证码错误!')

#字符串的对齐操作
center(20,"")居中,第一个为宽度,第二个为填充符(默认为空格)
ljust(20,’
’)左对齐,所设置的长度不够则输出原字符
zfill(20)右对齐,只接受一个参数,左边用0填充

s='hello,Python'
print(s.center(20,"*"))#居中,第一个为宽度,第二个为填充符(默认为空格)
print(s.ljust(20,'*'))#左对齐
print(s.rjust(20,'*'))#右对齐
print(s.zfill(20))#右对齐,只接受一个参数,左边用0填充
print(s.ljust(10,'*'))#所设置的长度不够则输出原字符
print('-8910'.zfill(10))#输出结果为-000008910

#字符串的劈分
split(str=’’,num=string.count(str))以str为分隔符,如果num有指定值,仅截取num+1个字符串,将分割后的字符串保存到列表中
rsplit()从右侧开始劈分

s='hello world python'
lst=s.split()#从字符串的左侧开始劈分,默认劈分处为空格
print(lst)
s1='hello|world|python'
print(s1.split(sep='|'))#sep()指定分割符
print(s1.split(sep='|',maxsplit=1))#maxsplit()指定分割次数
print(s.rsplit())#从右侧开始劈分
print(s1.split(sep='|'))
print(s1.split(sep='|',maxsplit=1))

#判断字符串
“”“isidentifier():判断指定的字持串是不是合法的标识符
isspace():判断指定的字符串是否全部由空白字符组成(回车、换行,水平制表符
isalpha():判断指定的字符串是否全部由字母组成
isdecimal():判断指定字符串是否全部由十进制的数字组成
isnuneric():判断指定的字符串是否全部由数字组成
isalnum():判断指定字符串是否全部由字母和数字组成
isdigit()判断字符串只包含数字为True”""

s='hello,python'
print(s.isidentifier())#错误,含有,(字母数字下划线)
print('hello'.isidentifier())
print('\n'.isspace())
print('abc'.isalpha())
print('123'.isnumeric())
print('123abc'.isalnum())
print('123'.isdecimal())

#字符串的替换与合并
replace(替换前,替换后,最大替换次数)
join(连接符,字符串)将列表或元组中的字符串合并成一个字符串

s='胡杨'
print(s.replace('胡杨','来八'))
s1='胡杨,胡杨,胡杨,来八'
print(s1.replace('胡杨','金玉',2))#数字为最大替换次数
lst=['hello','java','python']
print('|'.join(lst))
print(''.join(lst))#使用空字符让他们连接在一起
print('*'.join('huyang'))#huyang当成字符串序列

#l去除空格:strip rstrip strip
lstrip:去除字符串左侧的空格
rstrip:去除字符串右侧的空格

s='     hello   '
s=s.lstrip()
print(s+'8')
s=s.rstrip()
print(s+'8')
s=s.strip()
print(s+'8')#去除空格

#字符串的比较操作
“”"·运算符:>,>=,<,<=,==,!=
•比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中的所有后续字符将不再被比较
•比较原理:两上字符进行比较时,比较的是其ordinal value(原始值),调用内置函数ord可以得到指定字符的ordinal value。与内置函数ord对应的是内置函数chr,调用内置函数chr时指定ordinal value可以得到其对应的字符"""

print('apple'>'app')#True
print('apple'>'banana')#False
print(ord('a'),ord('b'))#输出a和b的原始值,a<b
print(chr(97),chr(98))#通过输出原始值输出字母

#is与==的区别:is比较的是id,==比较的是值
#字符串的切片操作[开头:结尾:布长(表示方向)
布长为负数时默认从最后一个字符串开始(表示方向,正数从左向右取值,负数从右向左取值)

s='hello,python'
s1=s[:5]#起始位置默认为0
s2=s[6:]#结束位置默认为最后
s3=s[:-3]#负数默认最后一个为-1
print(s1)
s4=s1+'!'+s2
print(s3)
s4=s[::3]#布长为3
print(s4)

#格式化字符串
第一种:%做占位符:%s字符串,%i或%d整数,%f为浮点数

name='胡杨'
age=20
print('我叫%s,今年%d岁' %(name,age))
"""{}"""
print('我叫{0},今年{1}岁'.format(name,age))

第二种:f-string

print(f'我叫{name},今年{age}岁')
print('%10d' % 99)#表示占用十个宽度
print('%.3f'%3.1415926)#表示保留三位小数
print('%10.3f'%3.1415926)#同时表示
print('{0:.3}'.format(3.1415926))#用{}表示的是三位有效数字
print('{0:.3f}'.format(3.1415926))#表示的是保留三位小数,0代表占位符的顺序,是有一个占位符
print('{0:10.3f}'.format(3.1415926))

#字符串的编码与解码
#编码
gbk 中文 gb2312 简体中文
GBK中一个中文占两个字节,b’表示的是二进制
UTF-8中一个中文占三个字节
s=‘胡杨大傻子’
print(s.encode(encoding=‘GBK’))
print(s.encode(encoding=‘UTF-8’))
#解码
编码和解码必须用同一种方式

byte=s.encode(encoding='GBK')#编码,byte代表二进制
print(byte.decode(encoding='GBK'))#解码
byte=s.encode(encoding='UTF-8')
print(byte.decode(encoding='UTF-8'))

#字符串内建函数:startswith() endswith()返回值都是布尔类型 判断是否以xxx开头或结尾(应用于文件上传)

filename='笔记.doc'
result=filename.endswith('doc')
print(result)

案例:
#文件上传 只能上传图片(jpg,png,bmp,gif)

path=input('请选择文件:')#C:\foo\bar\desk_background.jpg
#分析:要上传的文件的路径path----》文件名-----》通过文件名再判断是否是图片类型
p=path.rfind('\\')
filename=path[p+1:]#通过切片截取出来文件名
#判断是否是图片类型?
if filename.endswith('ipg') or filename.endswith('png') or filename.endswith('bmp') or filename.endswith('gif'):
    print('是图片允许上传!')
else:
    print('不是图片格式,只能上传图片!')
技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值