• chapter 01 字符串的那些事



    前言

    程序中随处都可见字符串,随便看断代码应该都是有的。同样,作为python的一种数据类型,比如工程代码中的打印日志,注释函数,数据的操作等等,都会用到字符串。我相信看到这个词,你就知道它大概是什么。

    在本章内容中,我们再详细的学习字符串的一些常用操作,并深入解释一下其中的细节。

    什么是字符串

    从实用的角度来看,字符串可以用来表示能够编码为文本或字节的任何事物。

    在python中,字符串被划分为不可变序列这一类型,意味着这些字符串所包含的字符存在从左至右的位置顺序,并且它们不可以在原位置修改。

    字符串是由字符组成的一个序列,通常我们会使用单引号、双引号、三引号来包裹住字符来表示字符串。

    s = "" # 空字符串
    n = '123'
    stu = 'tom'
    country = 'china'
    pasdword = "python"
    text = '''
            My name is tom, i am a student.
            I'm living in China.
            I love China.
           '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里我们定义了几个字符串,python支持三种引号形式定义字符串。三引号则主要应用于类或函数的注释(可以定义多行字符串),单引号和双引号则没什么却别。

    常见的字符串及其操作

    操作解释
    s = ‘s\np\ta\x00m’转义序列
    s = r’temp\spam’原始字符串(不进行转义)
    s1 + s2字符串拼接
    s * 3重复
    s[i]索引
    s[i : j]切片
    len(s)长度
    “a %s parrot” % kind字符串格式化表达式
    “a {0} parrot”.format(kind)字符串格式化方法
    s.find(‘a’)搜索
    s.rstrip()移除右侧空白
    s.replace(‘a’, ‘b’)替换
    s.split(‘,’)用分隔符分组
    s.isdigit()内容测试
    s.lower()大小写转换
    s.endswith(‘a’)尾部测试
    ‘,’.join(strlist)分隔符连接
    for x in s: print(s)迭代
    ‘a’ in s成员关系
    [c * 2 for c in s]成员关系
    map(ord, s)ord 返回单个字符的ASCII码
    re.match(‘sp(.*), line’)模式匹配:库模块

    举例:

    s = 's\np\ta'
    print(s)
    
    • 1
    • 2
    输出:
    s
    p	a
    
    • 1
    • 2
    • 3

    在转义字符的应用中最常用的也就是’\n’(换行符),'\t’横向制表符。在文本读取处理中,我们就可以用换行符去一行行读取。

    字符串的常用操作

    索引和切片

    my_job = 'hacker'
    print(len(my_job))
    print(my_job[0])
    print(my_job[1:3])
    
    • 1
    • 2
    • 3
    • 4
    6
    h
    ac
    
    • 1
    • 2
    • 3

    字符串作为序列,支持索引、切片和遍历操作。
    索引从左往右从0开始,index=0表示第一个元素;从右往左则是从-1,-2,-3… 即为索引;
    [index, index+2]则表示第index个元素到index+1个元素组成的子字符串。

    my_job = 'hacker'
    print(my_job[1:])
    print(my_job[:-1])
    print(my_job[::-1])
    print(my_job[1::2])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    acker
    hacke
    rekcah
    akr
    
    • 1
    • 2
    • 3
    • 4

    s[i:j:k] k为步长,默认值为1,允许跳过元素和反转顺序。

    遍历字符串同样很简单。即为遍历字符串中的每个字符。

    my_job = 'hacker'
    for c in my_job:
        print(c, end=' ')
    
    • 1
    • 2
    • 3
    h a c k e r 
    
    • 1

    for循环语句在循环中对字符串进行迭代。

    注意,前面说过python字符串是不可变的。

    字符串的拼接

    my_job = 'hacker'
    my_job[0] = 'H'
    
    • 1
    • 2

    在这里插入图片描述

    s = 'H' + my_job[1:]
    s = my_job.replace('h', 'H')
    
    • 1
    • 2

    我们可以采用上面的方法来替换某一个字符。
    第一种方法是直接采用大写的"H",通过+操作符,与原字符串切片操作的子字符串拼接成新的字符串;
    第二种方法则是扫描原字符串,使用replace进行替换。

    在其他语言中,比如java中,有可变的字符串类型,每次添加、改变或删除字符,无需创建新的字符串,时间复杂度仅为O(1).但可惜的是python中每次要改变字符串时,需要O(n)的时间复杂度。

    txt = 'i love python'
    txt_ls = txt.split()
    print(txt_ls)
    s_txt = '*'.join(txt_ls)
    print(s_txt)
    s = '  i love coding   '
    print(s.strip())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    输出:
    ['i', 'love', 'python']
    i*love*python
    i love coding
    
    • 1
    • 2
    • 3
    • 4
    • split 把字符串分割成子字符串,并返回一个分割后子字符串组合的列表;
    • join 把每个元素按照指定的方式连接起来;
    • strip 去掉字符串首尾的空格;比如从文档中读取的字符串,就需要把空格去掉。

    字符串的格式化输出

    通常,我们使用一个字符串作为模板,模板中会有格式符,这些格式符为后学真实值预留位置,以呈现出真实值应该呈现的形式。

    info = 'this is %d %s bird!' % (1, 'white')
    print(info)
    n = 1
    category = 'white'
    tem = 'this is {} {} bird!'.format(n, category)
    print(tem)
    temp = f'this is {n} {category} bird!'
    print(temp)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    输出:
    this is 1 white bird!
    this is 1 white bird!
    this is 1 white bird!
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    解决:vue-cli-service不是内部或外部命令
    一分钟学会如何使用 git 将本地文件上传至Coding代码库
    [python3] 发送微信 同步手机端
    CTF/AWD竞赛标准参考书+实战指南:《AWD特训营》
    跨平台下移动应用的开发框架对比与分析
    <Rust><iced>基于rust使用iced库构建GUI实例:图片的格式转换程序
    关于wake on lan远程唤醒主机的问题,长时间关机无法远程唤醒
    EdgeX Foundry - 导出数据到 HTTP 服务
    技术对接49
    【Python基础入门5】关于数据类型
  • 原文地址:https://blog.csdn.net/suwuzs/article/details/126677051