python学习9——字符串

#  Python学习
# 文件名称:  align.py
# 学习时间:   2022/7/6   9:41

#   字符串内容对齐操作的方法
#   字符串对齐
#   center()    居中对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,默认空格
#               如果设置宽度小于实际宽度则返回原字符串
#   ljust()     左对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,默认空格
#               如果设置宽度小于实际宽度则返回原字符串
#   rjust()     右对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,默认空格
#               如果设置宽度小于实际宽度则返回原字符串
#   zfill()     右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度,如果指定的宽度
#               小于等于字符串的长度,则返回字符串本身
s='Hello,python'
'''中心对齐'''
print(s.center(20,'*'))
'''左对齐'''
print(s.ljust(20,'^'))
print(s.ljust(10))
print(s.ljust(20))
'''右对齐'''
print(s.rjust(20,'!'))
'''右对齐,0填充'''
print(s.zfill(20))
print('-8960'.zfill(8))
#  Python学习
# 文件名称:  case_switching.py
# 学习时间:   2022/7/6   9:31

#   字符串的大小写切换操作方法:
#   upper()     把字符串中的所有字母都转成大写字母
#   lower()     把字符串中的所有字母都转成小写字母
#   swapcase()  把字符串中的所有大写字母转成小写字母,把小写字母转成大写字母
#   capitalize()把第一个字母转换成大写,其余字母转换成小写
#   title()     把每一个单词的第一个字母转换成大写,把每个单词的剩余字母转换成小写

#       注意:如果处理后无论结果仍新开辟一块空间
s='HeLlo,pytHon'
a=s.upper()
b=s.lower()
c=s.swapcase()
d=s.capitalize()
e=s.title()
print(a,b,c,d,e)
#  Python学习
# 文件名称:  code_decode.py
# 学习时间:   2022/7/6   11:51

#   为什么需要字符串的编码转换
#   A计算机的string在内存中以Unicode表示,经过编码转为byte字节传输:
#   byte信息经过解码在B计算机中显示

#   编码与解码的方式:
#   编码:将字符串转换为二进制数据(bytes)
#   解码:将bytes类型的数据转换成字符串类型
'''编码'''
s='天涯共此时'
print(s.encode(encoding='GBK'))  #  b表示二进制
print(s.encode(encoding='UTF-8'))
'''解码'''
#  Python学习
# 文件名称:  devide.py
# 学习时间:   2022/7/6   10:01

#   字符串劈分操作的方法:
#   字符串的劈分
#   split()     从字符串的左边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表
#               通过参数sep指定劈分字符串使用的劈分符
#               通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分后,剩余子串
#                   单独作为一部分
#   rsplit()    从字符串的右边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表
#               通过参数sep指定劈分字符串使用的劈分符
#               通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分后,剩余子串
#                   单独作为一部分
s='Hello world PyThon'
s1=s.split()  #   默认空格
print(s1)
s='Hello|world|PyThon'
s2=s.split('|',1)
#s2=s.split(sep='|',maxsplit=1)   与上式等价
print(s2)
s3=s.rsplit('|',1)
print(s3)

#  Python学习
# 文件名称:  find.py
# 学习时间:   2022/7/6   9:08

#   字符串的查询操作方法

#   查询方法:
#       index()     查找子串substr第一次出现的位置,如果查找的子串不存在,
#                   则抛出ValueError
#       rindex()    查找子串substr最后一次出现的位置,如果查找的子串不存在,
#                   则抛出ValueError
#       find()      查找子串substr第一次出现的位置,如果查找的子串不存在,
#                   则返回-1
#       rfind()     查找子串substr最后一次出现的位置,如果查找的子串不存在,
#                   则返回-1
s='hello.hello'
print(s.index('lo'))  #返回3,是第一个lo
print(s.rindex('lo')) #返回9,是最后一个lo
print(s.find('.he'))  #返回5
print(s.rfind('bv'))
#  Python学习
# 文件名称:  formatting.py
# 学习时间:   2022/7/6   11:36

#   格式化字符串
#   格式化字符串的两种方式
#   %作为占位符,  定义的格式化字符串  '我的名字叫:%s,今年%d岁了'   %(固定符号)  (name,age)

name='张三'
age=21
print('我叫%s,今年%d岁了' % (name,age))

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

print('我的名字叫{0},我今年{1}岁了,我真的叫{0}'.format(name,age))

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

'''demo'''
print('%10d' % 99)  #  10表示宽度
print('%f' % 3.141592653579)
print('%.3f' % 3.141562653579)
#   同时保留宽度和精度
print('%10.3f' % 3.141592653579)
print('hellohello')

'''demo2'''
print('{0}'.format(3.141592653579))
print('{0:.3}'.format(3.1415926535))  #   .3表示3位有效数字
print('{0:.3f}'.format(3.141592653579))  # .3f表示3位小数
print('{0:10.3f}'.format(3.141592653479))  #10位宽度,3位小数
#  Python学习
# 文件名称:  judge.py
# 学习时间:   2022/7/6   10:15

#   判断字符串操作的方法

#   判断字符串的方法
#   isidentifier()      判断指定的字符是不是合法的标识符
#                       标识符:26个英文单词,10个数字(0-9),下划线_
#   isspace()           判断指定的字符串是否全部由空白字符组成(回车、换行、水平制表符)
#   isalpha()           判断指定的字符串是否全部由字母组成(可以是字母,汉字)(不能为罗马数字)
#   isdecimal()         判断指定字符串是否全部由十进制数字组成
#   isnumeric()         判断指定的字符串是否全部由数字组成(可以是汉字数字或罗马数字以及阿拉伯数字)
#   isalnum()           判断指定的字符串是否全部由字母和数字组成
s='hel23lo_python'
print('1.',s.isidentifier())
s='     \t\n'
print('2.',s.isspace())
s='dargsdfa'
s1='z张三'
s_1='四'
s_2='Ⅳ'
print('3.',s.isalpha())
print(s1.isalpha())
print(s_1.isalpha())
print(s_2.isalpha())
s='5146454'
s_1='123四'
s_2='ⅠⅡ'
print('4.',s.isdecimal())
print(s_1.isdecimal())
print(s_2.isdecimal())
s='5465421016546'
print('5.',s.isnumeric())
print(s_1.isnumeric())
print(s_2.isnumeric())
s='alkjsdlka46434'
print('6.',s.isalnum())
#  Python学习
# 文件名称:  new_exist.py
# 学习时间:   2022/7/6   8:40

#   字符串:Python中基本数据类型,是一个不可变序列

# 字符串的驻留机制:创建相同字符串时,不开辟新的内存空间,仅指向已存在的空间

a='Python'
b="Python"
c='''Python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))

#   驻留机制的几种情况(交互模式):   命令行情况
#   1.字符串的长度为0/1时
#     以下代码均在命令行下执行
s1=''
s2=''
s1 is s2
s1='%'
s2='%'
s1 is s2
#   2.符合标识符的字符串
#   标识符:含有字母、数字、下划线
s1='abc%'
s2='abc%'
s1==s2
s1 is s2
#   3.字符串只在编译时进行驻留,而非运行时
a='abc'
b='ab'+'c'
c=''.join(['ab','c'])   #   join是在程序运行时才处理,所以a与c不在一个空间
a is b
a is c
#   4.[-5,256]之间的整数数字
a=-5
b=-5
a is b
a=-6
b=-6
a is b
#   sys中的intern方法强制2个字符串指向同一个对象
import sys
a='abc%'
b='abc%'
a is b
a=sys.intern(b)
a is b
#   Pycharm对字符串进行了优化处理,对一些原本不能驻留的字符串进行了驻留


#   字符串驻留机制的优缺点:
#    当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存
#    因此拼接字符串和修改字符串是会比较影响性能的

#   在需要进行字符串拼接时建议使用str类型的join方法,而非‘+’,因为join()方法是先计算出所有字符
#   中的长度,然后再拷贝,只new一次对象,效率要比‘+’高
#  Python学习
# 文件名称:  replace_join.py
# 学习时间:   2022/7/6   10:59

#   字符串的其他操作
#   字符串替换   replace()   第一个参数指定被替换的子串,第二个参数指定替换子串的字符串
#                           该方法返回替换后得到的字符串,替换前的字符串不发生变化,
#                           调用该方法时,可以通过第三个参数指定最大替换次数
#   字符串合并   join()      将列表或元组中的字符串合并成一个字符串

s='Hello,Python,lo'
print(s)
print(s.replace('lo','ol'))
print(s.replace('lo','ol',1))

list1=['hello','python','python']
print('+'.join(list1))
print('|'.join(list1))
print(list1)

t=('hello','python','java')
print('.'.join(t))

print('*'.join('Python'))
#  Python学习
# 文件名称:  slice_up.py
# 学习时间:   2022/7/6   11:20

#   字符串的切片操作
#   字符串是不可变类型,不具备增删改等操作,切片操作将产生新的对象
s='Hello,python'
s1=s[:5]
s2=s[6:]
s3='!'
s_new=s1+s3+s2
print(s1)
print(s2)
print(s_new)
print('——————————————————')
print(id(s))
print(id(s1))
print(id(s2))
print(id(s3))
print(id(s_new))
print('————————切片:[start:end:step]——————————')
print(s[1:5:1])
print(s[::2])   #开始0,结束末尾,步长2
print(s[::-1])  # 步长为正,则从头到尾,步长为负,从尾到头
print(s[:-7:1])
print(s[-6::])

 


byte=s.encode(encoding='GBK') # 编码

print(byte.decode(encoding='GBK')) # 解码

byte_2=s.encode(encoding='UTF-8')   # 编码

print(byte_2.decode(encoding='UTF-8')) # 解码
#  Python学习
# 文件名称:  compare.py
# 学习时间:   2022/7/6   11:10

#   字符串的比较操作:
#   运算符:> < >= <= == !=
#   比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,
#       知道两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中的
#       后续字符将不再被比较

#   比较原理:两个字符进行比较时,比较的是其ordinal value(原始值),调用内置函数ord可以
#       得到指定字符的ordinal value。与内置函数ord对应的是内置函数chr,调用内置函数chr
#       时指定ordinal value可以得到其对应的字符
print(ord('d'))
print(chr(100))

print(ord('杨'))

print('yyd'>'djdi')

''' == 与 is 的区别 
    == 比较的是 value
    is 比较的是 id
'''

 

posted @ 2022-07-11 17:05  于洲  阅读(127)  评论(0)    收藏  举报