Python学习笔记005——字符串

系统 1545 0

1.字符串概述

字符串是编程语言中的一种数据类型,Python当中字符串与其他语言中的字符串一样,是一种强大的处理工具集,但与C语言不同的是,Python中没有单个字符这种类型,取而代之的是只有一个字符的字符串类型。Python字符串被划为了不可变序列这一类别,这意味着Python中的字符串存在从左到右的顺序,且他们不可在原位置上修改。

2.一般的字符串

2.1字符串的定义

Python中字符串的定义可以用单引号、双引号和三引号,,其中单双引字符串是一样的,可以通用,但三引号不同,三引号的字符串类似标注信息,可以用来说明代码的用途,也可以在程序中运行。字符串定义的举例:

            
              
                >>
              
              
                >
              
              
                'abcd'
              
              
                'abcd'
              
              
                >>
              
              
                >
              
              
                "abcd"
              
              
                'abcd'
              
              
                >>
              
              
                >
              
              
                """abcd"""
              
              
                'abcd'
              
              
                >>
              
              
                >
              
              
                'ab'
              
              
                ,
              
              
                "cd"
              
              
                (
              
              
                'ab'
              
              
                ,
              
              
                'cd'
              
              
                )
              
              
                >>
              
              
                >
              
              
                'ab"cd'
              
              
                ,
              
              
                "ab'cd"
              
              
                # 逗号隔开的字符串会形成一个元组
              
              
                (
              
              
                'ab"cd'
              
              
                ,
              
              
                "ab'cd"
              
              
                )
              
              
                >>
              
              
                >
              
               title
              
                =
              
              
                'a'
              
              
                "b"
              
              
                'c'
              
              
                #字符串会自动合并
              
              
                >>
              
              
                >
              
               title

              
                'abc'
              
            
          

2.2转义字符串

在字符串中加入“\”可以嵌入一些特殊的字符,反斜杠会引入特殊的字节编码,可以让我们能在字符串中嵌入不容易使用键盘输入的字符。Python中提供的一些转义字符如下表,更多的考研参考一些Python教材:

转义 说明
\newline 忽视(连续)
\ \ 反斜杠(\))
\ ’ 单引号(‘)
\ “ 双引号(“)
\ n 换行

2.3Raw字符串

Raw字符串会抑制转义,可以用在不需要转义的场景,比如通过字符串定位到文件并打开。举例如下:

            
              
                >>
              
              
                >
              
               path 
              
                =
              
              
                'C:\new\text.dat'
              
              
                >>
              
              
                >
              
               path

              
                'C:\new\text.dat'
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              path
              
                )
              
              
C
              
                :
              
              
ew      ext
              
                .
              
              dat

              
                >>
              
              
                >
              
               path 
              
                =
              
               r
              
                'C:\new\text.dat'
              
              
                # Raw字符串抑制转义
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              path
              
                )
              
              
C
              
                :
              
              \new\text
              
                .
              
              dat

            
          

2.4三重引号的字符串

又称块字符串,可以方便的写出换行这种格式的字符串。

            
              
                >>
              
              
                >
              
               txt 
              
                =
              
              
                """llllllll
... bbbbbbbb
... cccccccc
... """
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              txt
              
                )
              
              
llllllll
bbbbbbbb
cccccccc

            
          

3字符串的应用

3.1基本操作

            
              
                >>
              
              
                >
              
              
                len
              
              
                (
              
              
                'abc'
              
              
                )
              
              
                # 求字符串的长度
              
              
                3
              
              
                >>
              
              
                >
              
              
                'abc'
              
              
                +
              
              
                'def'
              
              
                # 字符串相加
              
              
                'abcdef'
              
              
                >>
              
              
                >
              
              
                'a'
              
              
                *
              
              
                4
              
              
                # 重复字符的生成
              
              
                'aaaa'
              
              
                >>
              
              
                >
              
              
                'abc'
              
              
                +
              
              
                9
              
              
                # 错误的使用
              
              
Traceback 
              
                (
              
              most recent call last
              
                )
              
              
                :
              
              
  File 
              
                "
                
                  "
                
              
              
                ,
              
               line 
              
                1
              
              
                ,
              
              
                in
              
              
                <
              
              module
              
                >
              
              
TypeError
              
                :
              
               must be 
              
                str
              
              
                ,
              
              
                not
              
              
                int
              
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                "hacker"
              
              
                >>
              
              
                >
              
              
                'k'
              
              
                in
              
               a

              
                True
              
              
                >>
              
              
                >
              
              
                'ha'
              
              
                in
              
               a

              
                True
              
            
          

注意,两个字符串相加会生成一个新的字符串对象,同时字符串相加不允许字符串加数字等样式的操作出现。字符串是可迭代对象,故可以使用“in”。

3.2索引和分片

Python中的偏移量是从0开始的,字符串中每一个字符都有其对应的索引值,其功能的使用与列表和元组类似分片一般可以有三个参数,比如S[a️c],a是起始索引,b是结束索引,c是分片步长。

            
              
                >>
              
              
                >
              
               s 
              
                =
              
              
                "spark"
              
              
                >>
              
              
                >
              
               s
              
                [
              
              
                1
              
              
                ]
              
              
                # 按索引取值
              
              
                'p'
              
              
                >>
              
              
                >
              
               s
              
                [
              
              
                -
              
              
                2
              
              
                ]
              
              
                # 取倒数第二个字符
              
              
                'r'
              
              
                >>
              
              
                >
              
               s
              
                [
              
              
                1
              
              
                :
              
              
                3
              
              
                ]
              
              
                ,
              
              s
              
                [
              
              
                1
              
              
                :
              
              
                ]
              
              
                ,
              
              s
              
                [
              
              
                :
              
              
                -
              
              
                1
              
              
                ]
              
              
                # 字符串的分片
              
              
                (
              
              
                'pa'
              
              
                ,
              
              
                'park'
              
              
                ,
              
              
                'spar'
              
              
                )
              
              
                >>
              
              
                >
              
               s
              
                [
              
              
                :
              
              
                :
              
              
                -
              
              
                1
              
              
                ]
              
              
                # 分片的逆序用法
              
              
                'kraps'
              
            
          

3.3修改字符串

不能原地修改一个字符串,因为字符串是不可变序列。

            
              
                >>
              
              
                >
              
               s 
              
                =
              
              
                "abcde"
              
              
                >>
              
              
                >
              
               s
              
                [
              
              
                0
              
              
                ]
              
              
                =
              
               b
Traceback 
              
                (
              
              most recent call last
              
                )
              
              
                :
              
              
  File 
              
                "
                
                  "
                
              
              
                ,
              
               line 
              
                1
              
              
                ,
              
              
                in
              
              
                <
              
              module
              
                >
              
              
NameError
              
                :
              
               name 
              
                'b'
              
              
                is
              
              
                not
              
               defined

            
          

需要修改时可以尝试使用字符串的拼接(字符串变长)或者分片(字符串变短)来实现,而需要改变字符串的某个位置的字符时可以考虑使用replace方法来替换。

            
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                "abcdefg"
              
              
                >>
              
              
                >
              
               b 
              
                =
              
               a 
              
                +
              
              
                "hijklmn"
              
              
                >>
              
              
                >
              
               b

              
                'abcdefghijklmn'
              
              
                >>
              
              
                >
              
               c 
              
                =
              
               a
              
                [
              
              
                :
              
              
                3
              
              
                ]
              
              
                >>
              
              
                >
              
               c

              
                'abc'
              
              
                >>
              
              
                >
              
               b 
              
                =
              
               a
              
                .
              
              replace
              
                (
              
              
                'a'
              
              
                ,
              
              
                'pp'
              
              
                )
              
              
                # replace方法会生成新的字符串对象
              
              
                >>
              
              
                >
              
               b

              
                'ppbcdefg'
              
              
                >>
              
              
                >
              
               a  
              
                # 原字符串不变
              
              
                'abcdefg'
              
            
          

3.4常用的字符串方法

replace(a,b) 方法,将字符串中的子字符串a替换为b。

            
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                "abcdefga"
              
              
                >>
              
              
                >
              
               b 
              
                =
              
               a
              
                .
              
              replace
              
                (
              
              
                'a'
              
              
                ,
              
              
                'pp'
              
              
                )
              
              
                >>
              
              
                >
              
               b

              
                'ppbcdefgpp'
              
            
          

find(a) 方法返回子字符串a第一次出现的偏移量,如果没有子串a,返回-1。

            
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                "abcdefga"
              
              
                >>
              
              
                >
              
               a
              
                .
              
              find
              
                (
              
              
                "abc"
              
              
                )
              
              
                0
              
              
                >>
              
              
                >
              
               a
              
                .
              
              find
              
                (
              
              
                "bcd"
              
              
                )
              
              
                1
              
              
                >>
              
              
                >
              
               a
              
                .
              
              find
              
                (
              
              
                "abd"
              
              
                )
              
              
                -
              
              
                1
              
              
                >>
              
              
                >
              
               a
              
                .
              
              find
              
                (
              
              
                "asfjlkfsjdafkdjfkaj"
              
              
                )
              
              
                -
              
              
                1
              
            
          

list(s) 方法,将字符串s转换为列表。

            
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                "abcdefga"
              
              
                >>
              
              
                >
              
              
                list
              
              
                (
              
              a
              
                )
              
              
                [
              
              
                'a'
              
              
                ,
              
              
                'b'
              
              
                ,
              
              
                'c'
              
              
                ,
              
              
                'd'
              
              
                ,
              
              
                'e'
              
              
                ,
              
              
                'f'
              
              
                ,
              
              
                'g'
              
              
                ]
              
            
          

join(s) 方法,将列表s转换为字符串。join为字符串的拼接方法,需要直接作用于字符串上,比如m为字符串,m.join(s)的作用是将s列表中所有的子串以m为分隔拼接起来。

            
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                "abcdefga"
              
              
                >>
              
              
                >
              
               b 
              
                =
              
              
                list
              
              
                (
              
              a
              
                )
              
              
                >>
              
              
                >
              
               b

              
                [
              
              
                'a'
              
              
                ,
              
              
                'b'
              
              
                ,
              
              
                'c'
              
              
                ,
              
              
                'd'
              
              
                ,
              
              
                'e'
              
              
                ,
              
              
                'f'
              
              
                ,
              
              
                'g'
              
              
                ]
              
              
                >>
              
              
                >
              
              
                ''
              
              
                .
              
              join
              
                (
              
              b
              
                )
              
              
                'abcdefg'
              
              
                >>
              
              
                >
              
              
                ' '
              
              
                .
              
              join
              
                (
              
              b
              
                )
              
              
                'a b c d e f g'
              
              
                >>
              
              
                >
              
              
                'AABB'
              
              
                .
              
              join
              
                (
              
              b
              
                )
              
              
                'aAABBbAABBcAABBdAABBeAABBfAABBg'
              
            
          

split(a) 方法,按照a的方式分割字符串,将分割出来的子串保存到一个列表中,a可以省略,默认按空格分割。

            
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                "abc bcd cde"
              
              
                >>
              
              
                >
              
               a
              
                .
              
              split
              
                (
              
              
                )
              
              
                [
              
              
                'abc'
              
              
                ,
              
              
                'bcd'
              
              
                ,
              
              
                'cde'
              
              
                ]
              
              
                >>
              
              
                >
              
               a
              
                .
              
              split
              
                (
              
              
                " "
              
              
                )
              
              
                [
              
              
                'abc'
              
              
                ,
              
              
                'bcd'
              
              
                ,
              
              
                'cde'
              
              
                ]
              
              
                >>
              
              
                >
              
               b 
              
                =
              
              
                "abc,def,g"
              
              
                >>
              
              
                >
              
               b
              
                .
              
              split
              
                (
              
              
                ','
              
              
                )
              
              
                [
              
              
                'abc'
              
              
                ,
              
              
                'def'
              
              
                ,
              
              
                'g'
              
              
                ]
              
            
          

其他方法的使用:

            
              
                >>
              
              
                >
              
               a 
              
                =
              
              
                "The knights who say Ni\n"
              
              
                >>
              
              
                >
              
               a
              
                .
              
              rstrip
              
                (
              
              
                )
              
              
                # 去除字符串末尾的换行符
              
              
                'The knights who say Ni'
              
              
                >>
              
              
                >
              
               a
              
                .
              
              upper
              
                (
              
              
                )
              
              
                # 字符串转换为大写字母
              
              
                'THE KNIGHTS WHO SAY NI\n'
              
              
                >>
              
              
                >
              
               a
              
                .
              
              endswith
              
                (
              
              
                '\n'
              
              
                )
              
              
                # 检测结尾字符串
              
              
                True
              
              
                >>
              
              
                >
              
               a
              
                .
              
              startswith
              
                (
              
              
                'The'
              
              
                )
              
              
                # 检测起始字符串
              
              
                True
              
            
          

更多的其他字符串方法,可以参考Python的开发手册。

3.5字符串的格式化表达

%s % n 样式。这种样式常见于输出时传入变量的情况,与C语言类似。

            
              
                >>
              
              
                >
              
              
                "That is %d %s girl"
              
              
                %
              
              
                (
              
              
                1
              
              
                ,
              
              
                "nice"
              
              
                )
              
              
                'That is 1 nice girl'
              
            
          

%()s % {} 样式,基于字典的字符串格式化。

            
              
                >>
              
              
                >
              
              
                "That is %(n)d %(x)s girl"
              
              
                %
              
              
                {
              
              
                'n'
              
              
                :
              
              
                1
              
              
                ,
              
              
                'x'
              
              
                :
              
              
                "nice"
              
              
                }
              
              
                'That is 1 nice girl'
              
              
                >>
              
              
                >
              
            
          

format 方法。

            
              
                >>
              
              
                >
              
              
                "That is {} {} girl"
              
              
                .
              
              
                format
              
              
                (
              
              
                1
              
              
                ,
              
              
                "nice"
              
              
                )
              
              
                'That is 1 nice girl'
              
              
                >>
              
              
                >
              
              
                "That is {0} {1} girl"
              
              
                .
              
              
                format
              
              
                (
              
              
                1
              
              
                ,
              
              
                "nice"
              
              
                )
              
              
                'That is 1 nice girl'
              
              
                >>
              
              
                >
              
              
                "That is {1} {0} girl"
              
              
                .
              
              
                format
              
              
                (
              
              
                1
              
              
                ,
              
              
                "nice"
              
              
                )
              
              
                # 可以标注数字打乱顺序,0所指代的是format中第一个未命名的参数
              
              
                'That is nice 1 girl'
              
              
                >>
              
              
                >
              
              
                "That is {0} {n} girl"
              
              
                .
              
              
                format
              
              
                (
              
              
                1
              
              
                ,
              
              n 
              
                =
              
              
                "nice"
              
              
                )
              
              
                # 也可以给format的参数取名,这样可以不按照顺序来
              
              
                'That is 1 nice girl'
              
            
          

推荐使用format来格式化字符串。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论