Python中字符串的超细解析

一、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类型的数据转换成字符串类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值