• 【Python基础入门8】关于字符串


    目录

    一、字符串的驻留机制

    驻留机制:

    驻留机制的几种情况(交互模式)

    1、字符串长度为0或1:

    2、符合标识符的字符串(字母数字下划线):

    3、字符串只在编译时进行驻留:

    4、[-5, 256]之间的整数数字:

    intern方法

    二、字符串的常用操作

    1、字符串的查询

    2、字符串的大小写转换

    3、字符串的对齐

    4、字符串的“劈分”

    5、字符串的判断

    6、其他

    字符串替换

    字符串合并

    三、字符串的比较

    四、字符串的切片

    五、格式化字符串

    方法一:

    方法二:


    一、字符串的驻留机制

    字符串——Python中的基本数据类型,不可变的字符序列

    驻留机制:

    仅保存一份相同且不可变字符串的方法.不同的值被存放在字符串的驻留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。

    驻留机制的几种情况(交互模式

    1、字符串长度为0或1:

    1. >>> s1 = ''
    2. >>> s2 = ''
    3. >>> s1 is s2
    4. True
    5. >>> s1 = '#'
    6. >>> s2 = '#'
    7. >>> s1 is s2
    8. True

    2、符合标识符的字符串(字母数字下划线):

    1. >>> s1 = 'abcx'
    2. >>> s2 = 'abcx'
    3. >>> s1 is s2
    4. True
    5. >>> s1 = 'a_b'
    6. >>> s2 = 'a_b'
    7. >>> s1 is s2
    8. True
    9. >>> s1 = 'abc#@'
    10. >>> s2 = 'abc#@'
    11. >>> s1 == s2
    12. True
    13. >>> s1 is s2
    14. False

    3、字符串只在编译时进行驻留:

    1. >>> a = 'abc'
    2. >>> b = 'ab' + 'c'
    3. >>> c = ''.join(['ab', 'c'])
    4. >>> c
    5. 'abc'
    6. >>> a is b
    7. True
    8. >>> a is c
    9. False

    4、[-5, 256]之间的整数数字:

    1. >>> s1 = -6
    2. >>> s2 = -6
    3. >>> s1 is s2
    4. False
    5. >>> s1 = 4
    6. >>> s2 = 4
    7. >>> s1 is s2
    8. True

    intern方法

    sys库中的intern方法,可以强制使2个字符串指向同一个对象

    1. >>> import sys
    2. >>> s1 = 'abc#@'
    3. >>> s2 = 'abc#@'
    4. >>> s1 is s2
    5. False
    6. >>> s1 = sys.intern(s2)
    7. >>> s1 is s2
    8. True

    二、字符串的常用操作

    1、字符串的查询

    方法名称:

    index():查找子串第一次出现的位置,如果查找的子串不存在,则抛出ValueError

    find():查找子串第一次出现的位置,如果查找的子串不存在,则抛出-1

    rindex():查找子串第一次出现的位置,如果查找的子串不存在,则抛出ValueError

    rfind():查找子串第一次出现的位置,如果查找的子串不存在,则抛出-1

    例如:

    1. s = 'abcdefg'
    2. print(s.index('c'))
    3. print(s.find('c'))
    4. print(s.rindex('d'))
    5. print(s.rfind('d'))
    6. print(s.index('k'))
    7. print(s.find('k'))
    8. print(s.rindex('k'))
    9. print(s.rfind('k'))
    10. >> 2
    11. >> 2
    12. >> 3
    13. >> 3
    14. >> ValueError: substring not found
    15. >> -1
    16. >> ValueError: substring not found
    17. >> -1

    2、字符串的大小写转换

    方法名称:

    upper():所有字符转大写

    lower():所有字符转小写

    swapcase():大写字符转小写,小写字符转大写

    capitalize():将第一个字符转大写,其余字符转小写

    title():将每个单词的第一个字符转为大写,其余转为小写

    例如:

    1. s = 'hellO WorlD'
    2. print(s.upper()) # 转换后产生新的字符串对象
    3. print(s.lower()) # 转换后产生新的字符串对象
    4. print(s.swapcase())
    5. print(s.capitalize())
    6. print(s.title())
    7. >> HELLO WORLD
    8. >> hello world
    9. >> HELLo wORLd
    10. >> Hello world
    11. >> Hello World

    3、字符串的对齐

    方法名称:

    center():居中对齐,第1个参数指定宽度(小于字符串宽度则返回原字符串),第2个参数指定填 填充符(默认空格)

    ljust():左对齐,第1个参数指定宽度(小于字符串宽度则返回原字符串),第2个参数指定填充符(默认空格)

    rjust():右对齐,第1个参数指定宽度(小于字符串宽度则返回原字符串),第2个参数指定填充符(默认空格)

    zfill():右对齐,仅接受一个参数,用于指定宽度(小于则返回原字符串),左边用0填充充

    例如:

    1. s = 'hellO WorlD'
    2. print(s.center(20, '*'))
    3. print(s.ljust(20, '*'))
    4. print(s.rjust(20, '*'))
    5. print(s.zfill(20))
    6. >> ****hellO WorlD*****
    7. >> hellO WorlD*********
    8. >> *********hellO WorlD
    9. >> 000000000hellO WorlD

    4、字符串的“劈分”

    方法名称:

    split():从左边开始劈分,默认的劈分字符是空格,返回值是列表。可指定劈分符(sep=),及劈分次数(maxsplit=)

    rsplit():从右边开始劈分,默认的劈分字符是空格,返回值是列表。可指定劈分符(sep=),及劈分次数(maxsplit=)

    例如:

    1. s1 = 'hello world python'
    2. s2 = 'hello|world|python'
    3. print(s1.split())
    4. print(s2.split('|'))
    5. print(s2.split(sep='|', maxsplit=1))
    6. print(s1.rsplit())
    7. print(s2.rsplit('|'))
    8. print(s2.rsplit(sep='|', maxsplit=1))
    9. >> ['hello', 'world', 'python']
    10. >> ['hello', 'world', 'python']
    11. >> ['hello', 'world|python']
    12. >> ['hello', 'world', 'python']
    13. >> ['hello', 'world', 'python']
    14. >> ['hello|world', 'python']

    5、字符串的判断

    方法名称:

    isidentifier():判断指定的字符串是不是合法的标识符

    isspace():判断指定的字符串是否全部由空白字符(回车、换行、制表符)组成

    isalpha():判断指定的字符串是否全为字母

    isdecimal():判断指定的字符串是否全由十进制数字组成

    isnumeric():判断指定的字符串是否全由数字组成

    isalnum():判断指定的字符串是否全由字母和数字组成

    6、其他

    字符串替换

    replace():第1个参数指定被替换的子串,第2个参数指定替换子串的字符串,可通过第3个参数指定最大替换次数

    1. s1 = 'hello,python'
    2. s2 = 'hello,python,python,python'
    3. print(s1.replace('python', 'c++'))
    4. print(s2.replace('python', 'c++', 2))
    5. >> hello,c++
    6. >> hello,c++,c++,python

    字符串合并

    join():将列表或元祖中的字符串合并为一个字符串

    1. lst = ['hello', 'world', 'python']
    2. print(' '.join(lst))
    3. print(','.join(lst))
    4. >> hello world python
    5. >> hello,world,python

    三、字符串的比较

    运算符:>,>=,<,<=,==,!=

    比较规则:

    首先比较两个字符串的第一个字符,如果相等则继续比较下一对字符,一次比较下去,直至不相等,此时比较的结果则为两个字符串的比较结果。后续字符不再比较。

    注意:

    == 比较的是 value

    is 比较的是 id

    四、字符串的切片

    切记:字符串是不可变类型,其不具备增、删、改等操作。切片操作将产生新的对象

    先来看下索引,py的索引可顺可逆

     例如:

    1. s1 = 'hello,python'
    2. s2 = 'hello,python,python,python'
    3. print(s1[1:6])
    4. print(s2[-6:-1])
    5. >> ello,
    6. >> pytho

    五、格式化字符串

    方法一:

    %作占位符

    1. name = 'cheems'
    2. age = 6
    3. print('我的狗狗叫:%s,它今年%d岁了' % (name, age))
    4. >> 我的狗狗叫:cheems,它今年6岁了
    5. print('%5d' % 99) # 宽度为5
    6. print('%.2f' % 3.1415926) # 保留两位小数
    7. print('%10.2f' % 3.1415)
    8. >> 99
    9. >> 3.14
    10. >> 3.14

    方法二:

    {}作占位符

    1. name = 'cheems'
    2. age = 6
    3. print('我的狗狗叫:{0},它今年{1}岁了,是的,叫{0}'.format(name, age))
    4. >> 我的狗狗叫:cheems,它今年6岁了,是的,叫cheems
    5. print('{0:.2}'.format(3.1415926)) # .2表示一共2位数
    6. print('{0:.2f}'.format(3.1415926)) # .2f表示2位小数
    7. print('{0:10.2f}'.format(3.1415926)) # 同时设置,一共10位数,3位是小数
    8. >> 3.1
    9. >> 3.14
    10. >> 3.14

  • 相关阅读:
    Linux 主机间ssh相互免密
    IntelliJ IDEA
    工程师每日刷题-7
    【NIPS 2019】PVCNN:用于高效3D深度学习的点-体素 CNN
    终于阿里P8把SpringBoot+SpringCloud+Docker+MQ整合在一起,“啃完”真的很nice!
    Flutter实践一:package组织
    首条跨海铁路——深江铁路 通车后深圳与江门实现50分钟通达
    当出现“无法成功完成操作,因为文件包含病毒或潜在的垃圾软件“时的解决办法
    MyBatis篇---第四篇
    Android GLSurfaceView EGL_BAD_CONFIG 源码分析定位
  • 原文地址:https://blog.csdn.net/yewanyuan/article/details/126906641