python(五)字符串的常用操作和编码转码

Posted 水木,年華

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python(五)字符串的常用操作和编码转码相关的知识,希望对你有一定的参考价值。

字符串的驻留机制

'''字符串的驻留机制'''
a='python'
b="python"
c='''python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))
python 1368352737136
python 1368352737136
python 1368352737136


s1=''
s2=''
print(s1 is s2)

s1='%'
s2='%'
print(s1 is s2)

s1='abcx'
s2='abcx'
print(s1 is s2)
print(id(s1))
print(id(s2))

s1="abc#%%"
s2="abc#%%"
print(s1 is s2)
print(id(s1))
print(id(s2))
True
True
True
2427781498800
2427781498800
True
2427781498224
2427781498224

字符串的常用操作

字符串的查询操作的方法

'''字符串的查询操作'''
s='hello,hello'
print(s.index('lo'))  #3
print(s.find('lo'))   #3
print(s.rindex('lo')) #9
print(s.rfind('lo'))  #9
#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

字符串的大小写转换操作的方法

'''字符串的大小写转换的方法'''
s='hello,python'
a=s.upper() #转成大写之后,会产生一个新的字符串对象
print(a,id(a))
print(s,id(s))
print("-----------转换成小写-------------")
b=s.lower() #转成小写之后,会产生一个新的字符串对象
print(b,id(b))
print(s,id(s))
HELLO,PYTHON 2021884151728
hello,python 2021884151216
-----------转换成小写-------------
hello,python 2021884152048
hello,python 2021884151216
#########################################################################################
s2='hello,Python'
print(s2.swapcase())
print(s2.title())

HELLO,pYTHON
Hello,Python

字符串内容对齐操作

s='hello,Python'
'''居中对齐'''
print(s.center(20,'*'))

'''左对齐'''
print(s.ljust(20,'*'))
print(s.ljust(10))    #小于原字符串长度,将返回原字符串
print(s.ljust(20))    #默认填充符是空格

****hello,Python****
hello,Python********
hello,Python
hello,Python    
#########################################################################################
'''右对齐'''
print(s.rjust(20,'*'))

'''右对齐,使用0进行填充'''
print(s.zfill(20))
print('-8977'.zfill(8))

********hello,Python
00000000hello,Python
-0008977

字符串劈分操作

s='hello world Python'
lst=s.split()
print(lst)

s1='hello|world|Python'
print(s1.split(sep='|'))
print(s1.split(sep='|',maxsplit=1))

print('-------------------------------')
'''rsplit()从右侧开始劈分'''
print(s.rsplit())
print(s1.rsplit('|'))
print(s1.rsplit(sep='|',maxsplit=1))

['hello', 'world', 'Python']
['hello', 'world', 'Python']
['hello', 'world|Python']
-------------------------------
['hello', 'world', 'Python']
['hello', 'world', 'Python']
['hello|world', 'Python']

判断字符串操作

s='hello,python'
print('1',s.isidentifier()) #字母,数字,下划线,逗号不是
print('2','张三_123'.isidentifier())
print('3','\\t'.isspace())
print('4','abc'.isalpha())
print('5','张三1'.isalpha())
print('6','123'.isdecimal())
print('7','123四'.isnumeric())
print('8','张三123'.isalnum())
print('9','张三!'.isalnum())

1 False
2 True
3 True
4 True
5 False
6 True
7 True
8 True
9 False

字符串的替换和合并

s='hello,Python'
print(s.replace('Python','Java'))
s1='hello,Python,Python,Python'
print(s1.replace('Python','Java',2))

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

hello,Java
hello,Java,Java,Python
hello|Java|Python
helloJavaPython
#########################################################################################
t=('hello','Java','Python')
print(''.join(t))
print('*'.join('Python'))
helloJavaPython
P*y*t*h*o*n

字符串的比较操作

print('apple'>'app')
print('apple'>'banana')
print(ord('a'),ord('b'))
print(ord('赵'))

print(chr(97),chr(98))
print(chr(36213))
True
False
97 98
36213
a b
赵
#########################################################################################
'''==与is的区别
==比较的是value
is 比较的是id是否相等'''
a=b='Python'
c='Python'
print(a==b)
print(b==c)

print(a is b)
print(a is c)
print(id(a))
print(id(b))
print(id(c))
True
True
True
True
2162432169648
2162432169648
2162432169648
s='hello,Python'
s1=s[:5]
s2=s[6:]
s3='!'
new=s1+s3+s2
print(s1)
print(s2)
print(new)
hello
Python
hello!Python
#########################################################################################
print('----------切片[start:end:step]--------------------')
s='hello,Python'
print(s[1:5:1])  #从1开始截到5(不包含5),步长为1
print(s[::2])
print(s[::-1])
print(s[-6::1]) #从索引为-6开始,到最后一个元素结束,步长为1
ello
hloPto
nohtyP,olleh
Python

格式化字符串

#格式化字符串
#(1)%占位符
name='张三'
age=20
print('我叫%s,今年%d岁' % (name,age))

#(2) 
print('我叫0,今年1岁'.format(name,age))

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

我叫张三,今年20岁
我叫张三,今年20岁
我叫张三,今年20岁
#########################################################################################
print('%10d' % 99)        #10表示的是宽度
print('%.3f' % 3.1415926) #.3表示是小数点后三位
#同时表示宽度和精度
print('%10.3f' % 3.1415926) #一共总宽度为10,小数点后3位
print('123456789')
        99
3.142
     3.142
123456789
print('0:.3'.format(3.1415926))   #.3表示的是一共是3位数
print('0:.3f'.format(3.1415926))  #.3f表示是3位小数
print(':10.3f'.format(3.1415926)) #同时设置宽度和精度,一共是10位,3位是小数
3.14
3.142
     3.142

字符串的编码转换

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='UTF8')
print(byte.decode(encoding='UTF-8'))

b'\\xcc\\xec\\xd1\\xc4\\xb9\\xb2\\xb4\\xcb\\xca\\xb1'
b'\\xe5\\xa4\\xa9\\xe6\\xb6\\xaf\\xe5\\x85\\xb1\\xe6\\xad\\xa4\\xe6\\x97\\xb6'
天涯共此时
天涯共此时

小结

以上是关于python(五)字符串的常用操作和编码转码的主要内容,如果未能解决你的问题,请参考以下文章

python-基础 列表 集合 字典

python第二天

Python——day3_基础1_集合,文件操作,字符编码与转码

python基础之 列表元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

Python 三级菜单-字符编码和转码-集合的操作-文件的操作

python学习笔记(集合的使用文件操作字符编码与转码函数)