一、python中间字符串:
什么是字符串?
在python中字符串是基本数据类型, 不可变的字符序列
1.代码如下:
示例:
a='hello,hello' print(a.index('lo')) print(a.find('lo')) print(a.rindex('lo')) print(a.rfind('lo')) print(字符串大小写转换-) print("-----------upper小写转化为大写------------") a1='hello world' a2=a1.upper() print(a1) print(a2) print("----------------lower将大写转化为小写-------------------------") a3="HELLO WORLD" a4=a3.lower() print(a3) print(a4) print('---------------swapcase把大写变成小写,把小写变成大写-') a5="HELLO" a6=a5.swapcase() print(a5) print(a6) print('------------------------') a7='hello' a8=a7.swapcase() print(a7) print(a8) print('-------------capitalize():把第一个字符转换成大写,把其余字符转换成小写--------------------') q1="hello WORLD" q2=q1.capitalize() print(q1) print(q2) print('-------title-----------------') q3='hELLO' q4=q3.title() print(q3) print(q4) print('------------字符串的对齐方式--------------') q5='helloworld' print('---------居中对齐------------') print(q5.center(20,'*')) print('------------左对齐---------') print(q5.ljust(20,'*')) print('-----------右对齐----------') print(q5.rjust(20,"*")) print('-----------右对齐,用0填充----------') print(q5.zfill(20)) print('----------字符串的分割------------------') print('--------从左边开始分割-----------') s1='hello|world|python' print(s1.split(sep='|',maxsplit=1)) print('-----------从右边开始分割------------------') print(s1.rsplit(sep="|",maxsplit=1)) print('---------------字符串的判断----------------------') s2="hello,world" print('1.',s2.isidentifier()) print('2.','hello'.isidentifier()) print('3.','张三_'.isidentifier()) print('4.','张三_123'.isidentifier()) print('5.','\t'.isspace()) print('6.','abc'.isalpha()) print('7.','张三'.isalpha()) print('8.','张三1'.isalpha()) print('9.','123'.isdecimal()) print('10.','123四'.isdecimal()) print('11.','123'.isnumeric()) print('12.','123四'.isnumeric()) print('13.','abc111'.isalnum()) print('14.','张三111'.isalnum()) print('15.','abc111!!!'.isalnum()) print('--------------字符串的替换----------------------') s3='hello,python' print(s3) print(s3.replace('python','java')) s4='hello,python,python,python' print(s4) print(s4.replace('python','java',2)) print('------------字符串的合并------------------------------') lst=['hello','world','python'] print('|'.join(lst)) print("".join(lst)) yuanzu=("hello",'world') print(''.join(yuanzu)) print("*".join("python")) print('apple'>'app') print('apple'>'banana') print(ord("a"),ord("b")) print(chr(97),chr(98)) print('------------切片--------------------') z1='hello,world' z2=z1[:5] z3=z1[6:] z4='!' newz=z2+z4+z3 print(z2) print(z3) print(newz) print('---------字符串的格式化-----------------') print('%作为占位符') name='张三' age=18 print('我叫%s,今年%d岁'%(name,age)) print('{}作为占位符') print('我叫{0},今年{1}岁'.format(name,age)) print('f-string作为占位符') print(f'我叫{name},今年{age}岁') print('------------字符串的编码----------------------') z5='天涯共此时' print(z5.encode(encoding='GBK'))#在GBK中:一个中文站两个字节 print(z5.encode(encoding='UTF-8'))#在UTF-8中:一个中文站三个字节 print('-------------字符串的解码-----------') #byte代表就是一个二进制数据(字节类型的数据) byte=z5.encode(encoding="GBK") print(byte.decode(encoding="GBK"))
2.运行结果:
示例:
3
3
9
9
-----------字符串大小写转换-------------------
-----------upper小写转换成大写------------
hello world
HELLO WORLD
----------------lower大写转换成小写-------------------------
HELLO WORLD
hello world
---------------swapcase将大写转换成小写,将小写转换成大写------------------
HELLO
hello
------------------------
hello
HELLO
-------------capitalize():把第一个字符转换成大写,把其余字符转换成小写--------------------
hello WORLD
Hello world
-------title-----------------
hELLO
Hello
------------字符串的对齐方式--------------
---------居中对齐------------
*****helloworld*****
------------左对齐---------
helloworld**********
-----------右对齐----------
**********helloworld
-----------右对齐,用0填充----------
0000000000helloworld
----------字符串的分割------------------
--------从左边开始分割-----------
['hello', 'world|python']
-----------从右边开始分割------------------
['hello|world', 'python']
---------------字符串的判断----------------------
1. False
2. True
3. True
4. True
5. True
6. True
7. True
8. False
9. True
10. False
11. True
12. True
13. True
14. True
15. False
--------------字符串的替换----------------------
hello,python
hello,java
hello,python,python,python
hello,java,java,python
------------字符串的合并------------------------------
hello|world|python
helloworldpython
helloworld
p*y*t*h*o*n
True
False
97 98
a b
------------切片--------------------
hello
world
hello!world
---------字符串的格式化-----------------
%作为占位符
我叫张三,今年18岁
{
}作为占位符
我叫张三,今年18岁
f-string作为占位符
我叫张三,今年18岁
------------字符串的编码----------------------
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'
-------------字符串的解码-----------
天涯共此时
进程已结束,退出代码为 0
总结:
提示:这里对文章进行总结:
字符串的驻留机制:
仅保存一份相同且不可变字符串的方法,不能的值被存放在字符串的驻留池中,
python的驻留机制对相同的字符串只保留一份拷贝,后创建相同字符串时,
不会开辟新空间,而是把该字符串的地址赋给新创建的变量
a='python'
b=“python”
c='''python'''
a b c ==》python
滞留机制的几种情况(交互模式)
字符串的长度为0或者1时
符合标识符的字符串
字符串只在编译时进行驻留,而非运行时
[-5,256]之间的整数数字
sys中的intern方法强制2个字符串指向同一个对象
pycharm对字符串进行了优化处理
字符串驻留机制的优缺点:
当需要值相同的字符串时,可以直接从字符串池里拿出来使用,避免频繁的创建和销毁,
提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的
在需要进行字符串拼接时建议使用 str类型的join方法,而非+
因为join()方法是先计算出所有字符串中的长度,然后在拷贝,只new一次对象
效果要比+效率高
字符串的常用操作:
查询方法:
index():查找子串substr第一次出现的位置,如果查找的子串不存在时,则抛出valueerror
rindex():查找子串substr最后一次出现的位置,如果查找的子串不存在,则抛出valueerror
find():查找子串substr第一次出现的位置,如果查找的子串不存在时,则返回-1
rfind():查找子串substr最后一次出现的位置,如果查找的子串不存在,则返回-1
大小写转换操作:
upper():把字符串中所有字符都转成大写字母
lower():把字符串中所有字符都转成小写字母
swapcase():把字符串中所有大写字母转成小写字母,把所有小写字母转成大写字母
capitalize():把第一个字符转换成大写,把其余字符转换成小写
title():把每个单词的第一个字符转换为大写,把每个单词的剩余字符转换成小写
字符串对齐:
center():居中对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,
默认是空格,如果设置宽度小于实际宽度则返回原字符串
ljust():左对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,
默认是空格,如果设置宽度小于实际宽度则返回原字符串
rjust():右对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,
默认是空格,如果设置宽度小于实际宽度则返回原字符串
zfill():右对齐,左边用0填充,该方法只接受一个参数,用于指定字符串的宽度,
如果指定的宽度小于等于字符串的长度,返回字符串本身
字符串的分割:
split():
从字符串的左边开始分割,默认的分割字符串是空格字符串,返回的值是一个列表
以通过参数sep指定分割字符串是的分隔符
通过参数maxsplit指定凤娥字符串时的最大分割次数,在经过最大分割后,
剩余的子串会单独作为一部分
rsolit():从字符串的右边开始分割,默认的分割字符串是空格字符串,返回的值是一个列表
以通过参数sep指定分割字符串是的分隔符
通过参数maxsplit指定凤娥字符串时的最大分割次数,在经过最大分割后,
剩余的子串会单独作为一部分
字符串的判断:
isideentifier():判断指定字符串是不是合法的标识符
isspace():判断指定字符串是否全部由空白字符组成(回车,换行,水平制表符)
isalpha():判断指定字符串是否全部由字母组成
isdecimal():判断指定字符串是否全部由十进制的数字组成
isnumeric():判断指定字符串是否全部由字母组成
isalnum():判断指定字符串是否全部由字母和数字组成
字符串的替换 合并:
replace():第一个参数指定被替换的子串,第二个参数指定替换字串的字符串,
该方法返回替换后得到的字符串,替换前的字符串不发生变化,
调用该方法时,可以通过第三个参数指定最大替换次数
join():将列表或元组中的字符串合并成一个字符串
字符串的比较:
运算符:> >= <= == !=
比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去
直到俩个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,
两个字符串中的所有后续字符将不在被比较
比较原理:两个字符进行比较时,比较的是其ordinal value(原始值)
调用内置函数ord可以得到指定字符的ordinal value
与内置函数ord对应的是内置函数chr,
调用内置函数chr时指定ordinal value可以得到其对应的字符
注意:
== : 比较的value
is : 比较的id
字符串的切片:
字符串是不可变类型:
不具备增 删 改等操作
切片操作将产生新的对象
字符串的格式化:
%作为占位符:
%s 字符串
%d/%i 整数
%f 浮点数
{}作为占位符:
{0} format(name)
字符串的编码转换
为什么需要字符串的编码转换:
a计算机将str在内存中以Unicode表示=编码=》byte字节传输=解码=>b计算机显示
编码与解码:
编码:将字符串转换成二进制数据byte
解码:将byte类型的数据转换成字符串类型