Chap 09 一串连一串

075_字符串的创建和驻留机制

"""
课程视频:75_字符串的创建和驻留机制
学习时间:2022/4/13 19:42
"""
# 字符串的驻留机制:相同的字符串只保留一份拷贝
# 创建相同字符串时,把该字符串的地址赋给新变量,避免频繁的创建和销毁,提升效率节约内存
# 因此,拼接和修改字符串比较影响性能
# 拼接字符串,建议使用str类型的join方法,而非+,join()先计算所有字符长度再拷贝,只new一次对象
a = 'python'
b = "python"
c = '''python'''
print(a, id(a))
print(b, id(b))
print(c, id(c))

s1 = 'abc%'
s2 = 'abc%'
print(s1 is s2)  # 原本为False,但PyCharm对字符串进行了优化处理,显示True


076_字符串的查询

"""
课程视频:76_字符串的常用操作_查询
学习时间:2022/4/13 20:10
"""
# index():查找子串substr第一次出现的位置,如不存在,则ValueError
# rindex():查找子串substr最后一次出现的位置,如不存在,则ValueError
# find():查找子串substr第一次出现的位置,如不存在,则返回-1
# rfind():查找子串substr最后一次出现的位置,如不存在,则返回-1
s = 'hello,hello'
print(s.index('lo'))
print(s.find('lo'))
print(s.rindex('lo'))
print(s.rfind('lo'))

# print(s.index('k'))  # 不存在则报错,ValueError: substring not found
print(s.find('k'))  # 不存在则返回-1
# print(s.rindex('k'))  # 不存在则报错,ValueError: substring not found
print(s.rfind('k'))  # 不存在则返回-1


077_字符串的大小写转换

"""
课程视频:77_字符串的常用操作_大小写转换
学习时间:2022/4/13 20:21
"""
# upper():把字符串中所有字符转成大写
# lower():把字符串中所有字符转成小写
# swapcase():把字符串中所有大写转成小写,所有小写转成大写  [swapcase 交换箱]
# capitalize():把第一个字符转为大写,其余字符转为小写
# title():把每个单词第一个字符转为大写,剩余字符转为小写
s1 = 'hello,hello'
a = s1.upper()  # 转换之后会形成新的字符串对象
print(s1, id(s1))
print(a, id(a))
b = s1.lower()  # 转换之后会形成新的字符串对象
print(s1, id(s1))
print(b, id(b))
print(s1 == b)  # True
print(s1 is b)  # False

s2 = 'hello,Hello'
print(s2.swapcase())
print(s2.capitalize())
print(s2.title())


078_字符串的对齐

"""
课程视频:78_字符串的常用操作_对齐
学习时间:2022/4/13 20:40
"""
# center():居中对齐,参数1指定宽度,参数2可指定填充符,默认空格,设置宽度不够则返回原字符串
# ljust():左对齐,参数1指定宽度,参数2可指定填充符,默认空格,设置宽度不够则返回原字符串
# rjust():右对齐,参数1指定宽度,参数2可指定填充符,默认空格,设置宽度不够则返回原字符串
# zfill():右对齐,左边用0填充,只接收1个参数用于指定宽度,设置宽度不够则返回原字符串
s = 'hello,Python'
print(s.center(30, '-'))
print(s.ljust(30, '-'))
print(s.rjust(30, '-'))
print(s.zfill(30))

print(s.center(5, '-'))  # 设置宽度不够则返回原字符串
print(s.zfill(5))  # 设置宽度不够则返回原字符串
print('6789'.zfill(10))
print('-789'.zfill(10))  # -000000789,0添加在负号之前


079_字符串的劈分

"""
课程视频:79_字符串的常用操作_劈分
学习时间:2022/4/13 20:58
"""
# split():从左开始劈分  rsplit():从右开始劈分
# 默认劈分字符是空格字符串,返回值是一个列表
# 通过参数sep指定劈分符
# 通过参数maxsplit指定最大劈分次数,最大劈分后剩余的子串单独作为一个部分
s1 = 'hello world Python'
print(s1.split())
s2 = 'hello|world|Python'
print(s2.split(sep='|'))
print(s2.split(sep='|', maxsplit=1))
print('------------------')
print(s1.rsplit())
print(s2.rsplit('|'))
print(s2.rsplit('|', maxsplit=1))


080_字符串的判断

"""
课程视频:80_字符串的常用操作_判断
学习时间:2022/4/13 21:16
"""
# isidentifier()  判断指定的字符串是否合法的标识符(字母、数字、下划线)
# isspace()  判断指定的字符串是否全部由空白字符组成(回车、换行、水平制表符)
# isalpha()  判断指定的字符串是否全部由字母组成
# isdecimal()  判断指定的字符串是否全部由十进制数字组成
# isnumeric()  判断指定的字符串是否全部由数字组成
# isalnum()  判断指定的字符串是否全部由字母和数字组成
s = 'hello,python'
print('1.', s.isidentifier())  # False
print('2.', 'hello'.isidentifier())  # True
print('3.', '张三_'.isidentifier())  # True
print('4.', '张三_123'.isidentifier())  # True

print('5.', '\t'.isspace())  # True

print('6.', 'abcde'.isalpha())  # True
print('7.', '张三'.isalpha())  # True
print('8.', '张3'.isalpha())  # False

print('9.', '123'.isdecimal())  # True
print('10.', '123四'.isdecimal())  # False  中文数字不是十进制数字
print('11.', 'ⅰⅱⅲⅳ'.isdecimal())  # False  罗马数字不是十进制数字

print('12.', '123'.isnumeric())  # True
print('13.', '123四'.isnumeric())  # True  中文数字是数字
print('14.', 'ⅰⅱⅲⅳ'.isnumeric())  # True  罗马数字是数字

print('15.', 'abc123'.isalnum())  # True
print('16.', '张三123'.isalnum())  # True
print('17.', 'abc!'.isalnum())  # False


081_字符串的替换与合并

"""
课程视频:81_字符串的替换与合并
学习时间:2022/4/13 21:46
"""
# replace()  参数1:被替换的子串,参数2:替换子串的字符串,参数3:最大替换次数
# join()  将列表或元组中的字符串合并成一个字符串
s = 'hello,Python,Python,Python,Python'
print(s.replace('Python', 'Java'))  # 全部替换
print(s.replace('Python', 'Java', 2))  # 第三参数换2次

lst = ['hello', 'Java', 'Python']
print('|'.join(lst))
print(' '.join(lst))
print(''.join(lst))

t = ('hello', 'Java', 'Python')
print('|'.join(t))
print(' '.join(t))
print(''.join(t))

print('-'.join('Python'))  # P-y-t-h-o-n


082_字符串的比较

"""
课程视频:82_字符串的比较
学习时间:2022/4/13 23:22
"""
# 运算符:>,>=,<,<=,==,!=
# 运算规则:依次比较两个字符串中的字符,直至出现不相等即为比较结果,后续字符不再比较
# 比较原理:比较ordinal value(原始值)
# 内置函数ord可以得到指定字符对应的ordinal value
# 内置函数chr可以得到指定ordinal value的对应字符
print('apple' > 'app')  # True
print('apple' > 'banana')  # False
print(ord('a'), ord('b'))  # a的ordinal value为97,b的为98
print(chr(97), chr(98))  # a b
print(chr(26472))  # 杨
# ==比较的是value,is比较的是id
a = b = c = 'Python'
print(a == b == c)  # True
print(a is b is c)  # True


083_字符串的切片

"""
课程视频:83_字符串的切片
学习时间:2022/4/13 23:41
"""
# 字符串是不可变类型
# 不具备增、删、改等操作。切片操作将产生新对象
s = 'hello,Python'
s1 = s[:5]  # 从0切到5之前
s2 = s[6:]  # 从6切到最后
print(s1)
print(s2)
print(s1 + '!' + s2)

print(s[1:5:1])
print(s[::2])
print(s[::-1])
print(s[-6:])


084_格式化字符串

"""
课程视频:84_格式化字符串
学习时间:2022/4/13 23:52
"""
# 1. %作占位符:  %s-->str, %d-->int, %f-->float
name = '张三'
age = 20
money = 19.87
print('我叫%s,今年%d岁,我有%f元' % (name, age, money))
# %5s的5表示宽度,%.2f的.2表示精度
print('我叫%5s,今年%d岁,我有%.2f元' % (name, age, money))

# 2. {}作占位符:
print('我叫{0},今年{1}岁,我真的叫{0}'.format(name, age))

# 3. f-string
print(f'我叫{name},今年{age}岁')

print('%10.2f' % 3.1415927)  # 同时设置宽度和精度
print('%10.3f' % 3.1415927)
print('%10.4f' % 3.1415927)

print('{0:.4}'.format(3.1415927))  # .4 表示一共4位数
print('{0:.4f}'.format(3.1415927))  # .4f表示一共4位小数
print('{0:10.4f}'.format(3.1415927))  # 同时设置宽度和精度

 
085_字符串的编码转换

"""
课程视频:85_字符串的编码转换
学习时间:2022/4/14 0:27
"""
# 编码:将字符串转换为二进制数据(bytes)
# 解码:将bytes类型的数据转换为字符串类型
s = '瞅你咋滴'
# 编码
print(s.encode(encoding='GBK'))  # GBK 编码格式中,一个中文占两个字节
print(s.encode(encoding='UTF-8'))  # UTF-8 编码格式中,一个中文占三个字节

# 解码
# byte代表一个二进制数据(字节类型的数据)
byte = s.encode(encoding='GBK')
print(byte.decode(encoding='GBK'))
byte = s.encode(encoding='UTF-8')
print(byte.decode(encoding='UTF-8'))
# 编码解码的格式要相同


知识点总结

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值