掌握python字符串容器_Python字符串容器,python

'''--------容器的特点和容器的操作--------------------------------------------------------'''

#容器的本质目的:减少变量名,统一管理元素

#1、为什么学习容器类型?有什么作用?

#之前的变量类型都只能存储单一元素。

# 若需要定义的变量数过多,将所有的元素放在同一个容器中,一个容器变量就可以存储多个元素,减少了变量的定义

#2、为什么容器类型提供了多个类型?

#每个容器针对了不同的使用场景:有的容器方便操作、有的查询效率高、有的可以保证元素唯一、有的可以保证数据只读等等。

'''多种容器根据 存储数据 的特点,分为 序列式容器 和 非序列式容器'''

#1、序列式容器:存储元素时 是连续存放的。包括 字符串、列表、元组

#序列式容器支持根据下标(索引)存取元素【序列式容器的索引都是从0开始的,不是从1】

#2、非序列式容器:存储元素时 不是连续存放的。包括 字典、集合

"""字符串(容器)的定义及操作--------------------------------------------------------------"""

'''一、如何定义字符串:使用一对 单引号、双引号、三引号(较少使用) 来进行定义。----------------------------'''

my_str='hello'

my_str="hello"

# my_str="""

# hello

# world

# """

'''二、字符串的操作---------------------------------------------'''

'''1、字符串取值。取某一个位置的值----------------------------------------------------------'''

'''索引支持正数索引(从左到右0开始),也支持负数索引(从右到左-1开始)'''

#【hello每个元素正数索引为01234】

print(my_str[1]) #0是索引,即取e字符串中索引为0的元素。返回值为:e

#【hello每个元素负数索引为-5,-4,-3,-2,-1】

print(my_str[-4]) #-4索引对应的元素为e

'''2、字符串遍历。遍历:不重复地访问容器中的每一个元素----------------------------------------------------'''

#通过while循环进行遍历

my_str="hello"

a=0

while a<=4:

print(my_str[a],end=(' ')) #若不设置end,默认每个字母输出都会换行。设置end中为空格/为空,会在每个字母中空格/无间隙

a+=1 #返回值为h e l l o

#通过for循环进行遍历

my_str="hello"

for a in my_str: # a 每次都到容器 my_str 里面 按序 取一个元素,再 print 该元素。之后进行循环,直都取完。

print(a,end=" ")

#while循环次数由条件决定;for循环的循环次数由容器元素个数决定,控制容器元素个数就可以控制循环次数

'''3、字符串替换:replace【字符串专属方法】-----------------------------------------------------'''

poetry="此曲只应天上由,人间难得几回闻,由"

#replace不会替换原本的字符串,而是替换完毕后返回一个新的字符串。【python中字符串原本数据不允许修改,所以会返回新字符串】

new=poetry.replace('由','有',1) # 1 表示替换一次错误的字符

print(poetry) #原字符串:此曲只应天上由,人间难得几回闻,由

print(new) #新字符串:此曲只应天上有,人间难得几回闻,由

#replace是字符串容器专属方法(函数),调用时用"字符串名.replace"【字符串通过点的方式调用专属方法】

'''字符串特点:

1、字符串一旦定义,不允许修改

2、字符串容器中的元素都是字符类型的

'''

'''4、字符串切片【切片语法是:左闭右开】:用于获取字符串中的字串(截取)---------------------------------------'''

user_email='123456789@126.com' #分别显示邮箱名和域名

#find字符串专属方法:返回字串第一次出现的位置;若查找不到,返回-1

#user_email.find('@') 查找@第一次出现的位置,返回值为@所在索引

print(user_email[0: user_email.find('@')]) #返回:123456789。用冒号表示截取多少到多少索引的子串

#从最开始获取字串时,可以省略起始值0:[: user_email.find('@')]

string_lenth=len(user_email) #获得容器中元素的个数

print(user_email[user_email.find('@')+1 : len(user_email)]) #显示@之后的域名,结果为:126.com

#获取字串到结尾位置时,可以省略结束值长度:[user_email.find('@')+1 : ]

'''

省略起始值,表示从0开始;省略结束值,表示取到最后

省略起始值和结束值,表示获取整个字符串,写为print(:),结果为:123456789@126.com

步长设置:默认为1,可以设置其他值

起始值、结束值、步长都可以为负数【步长负数表示倒着取:字符串逆序】

'''

print(user_email[::1])#或者:print(user_email[:]):返回完整字符串结果:123456789@126.com

print(user_email[::2]) #步长为2,返回值:1357916cm(每隔两个取一个元素)

print(user_email[6:1:-1])#从索引6,取到索引1,字串倒着取。所以起始值和结束值也要倒过来;值为:76543

print(user_email[::-1])#结果为:moc.621@987654321

print(user_email[-1:-3:-1])#结果为:mo

print(user_email[-3:-1:1])#结过为co

print(user_email[3:1:-1])#结果为:43

#起始值和结束值谁在前,谁在后,跟步长的正负有关

#步长为正数,从左往右取:起始值和结束值分别为:1——5或者-5—— -1

#步长为负数,从右往左取:起始值和结束值分别为:5——1或者-1——-5

'''邮箱案例完整代码( 切片法 find+ [起始值:结束值] )----------------------------------------------------'''

user_name='nicoley@wicresoft.com'

position=user_name.find('@')

if position== -1:

print('查找不到此邮箱')

else :

print('邮箱前缀为:%s'%user_name[:position])

print(('邮箱域名为:%s'%user_name[position+1:]))

#返回结果为:邮箱前缀为:nicoley 邮箱域名为:wicresoft.com

'''邮箱案例完整代码( split拆分法+[起始值:结束值] )----------------------------------------------------'''

# 给一个参数(分割符sep),以参数为中心,进行前后拆分,例如:

my_sep='aa#bbqqq#cccd#ggggg'

ret=my_sep.split('#')

print(ret) #结果为:['aa', 'bbqqq', 'cccd', 'ggggg']

#拆分形成的结果类似于列表,每个保存的元素也有对应的索引

print(ret[2:]) #结果为:['cccd', 'ggggg']

邮箱案例的拆分法:

user_name='nicoley@wicresoft.com'

number=user_name.count('@') #count计算字符串中某个字符出现的次数,可以用于校验邮箱是否合法

ret=user_name.split("@")

if number==1:

print('邮箱前缀为:%s'%ret[0])

print('邮箱域名为:%s'%ret[1]) #结果为:邮箱前缀为:nicoley ;邮箱域名为:wicresoft.com

else:

print('邮箱中@字符个数不为1,格式无效')

'''5、字符串去除两侧空格,是否为字母----------------------------------------------------------'''

#例如,用户注册用户名,需要去除两侧空格,并且校验用户名是否全部为字母;都满足则显示注册成功

while True:

user_name=input('请输入您的用户名:')

user_name=user_name.strip() #strip方法专门用于去除两侧空格

if user_name.isalpha(): #判断字符串中是否全为字母【发现汉字还是可以注册成功】

print(' %s 注册成功!'% user_name)

else:

print('用户名中含有非法字符!')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值