Python 3 - 字符串

  • 简述

    字符串是 Python 中最流行的类型之一。我们可以简单地通过将字符括在引号中来创建它们。Python 将单引号视为与双引号相同。创建字符串就像为变量赋值一样简单。例如 -
    
    var1 = 'Hello World!'
    var2 = "Python Programming"
    
  • 访问字符串中的值

    Python 不支持字符类型;这些被视为长度为 1 的字符串,因此也被视为子字符串。
    要访问子字符串,请使用方括号与索引一起进行切片以获取子字符串。例如 -
    
    #!/usr/bin/python3
    var1 = 'Hello World!'
    var2 = "Python Programming"
    print ("var1[0]: ", var1[0])
    print ("var2[1:5]: ", var2[1:5])
    
    执行上述代码时,会产生以下结果 -
    
    var1[0]:  H
    var2[1:5]:  ytho
    
  • 更新字符串

    您可以通过(重新)将变量分配给另一个字符串来“更新”现有字符串。新值可以与其先前的值相关,也可以与完全不同的字符串相关。例如 -
    
    #!/usr/bin/python3
    var1 = 'Hello World!'
    print ("Updated String :- ", var1[:6] + 'Python')
    
    执行上述代码时,会产生以下结果 -
    
    Updated String :-  Hello Python
    
  • 转义字符

    下表是可以用反斜杠符号表示的转义字符或不可打印字符的列表。
    转义字符被解释;在单引号和双引号字符串中。
    反斜杠符号 十六进制字符 Description
    \a 0x07 响铃或警报
    \b 0x08 退格键
    \cx Control-x
    \C-x Control-x
    \e 0x1b 逃脱
    \f 0x0c 换页
    \M-\C-x 元控制-x
    \n 0x0a 新行
    \nnn 八进制表示法,其中 n 在 0.7 范围内
    \r 0x0d 回车
    \s 0x20 空间
    \t 0x09 标签
    \v 0x0b 垂直制表符
    \x 角色 x
    \xnn 十六进制表示法,其中 n 在 0.9、af 或 AF 范围内
  • 字符串特殊运算符

    假设字符串变量a持有“你好”和变量b持有'Python',然后 -
    操作员 描述 例子
    + 串联 - 在运算符的任一侧添加值 a + b will give HelloPython
    * 重复 - 创建新字符串,连接同一字符串的多个副本 a*2 will give -HelloHello
    [] Slice - 给出给定索引中的字符 a[1] will give e
    [ : ] Range Slice - 给出给定范围内的字符 a[1:4] will give ell
    in Membership - 如果给定字符串中存在某个字符,则返回 true H in a will give 1
    not in Membership - 如果给定字符串中不存在某个字符,则返回 true M not in a will give 1
    r/R 原始字符串 - 抑制转义字符的实际含义。原始字符串的语法与普通字符串的语法完全相同,除了原始字符串运算符,即引号前面的字母“r”。“r”可以是小写字母 (r) 或大写字母 (R),并且必须紧接在第一个引号之前。 print r'\n' prints \n and print R'\n'prints \n
    % Format - 执行字符串格式化 见下一节
  • 字符串格式化运算符

    Python 最酷的功能之一是字符串格式运算符 %。此运算符是字符串所独有的,并且弥补了 C 的 printf() 系列中的函数包。以下是一个简单的例子 -
    
    #!/usr/bin/python3
    print ("My name is %s and weight is %d kg!" % ('Alex', 21)) 
    
    执行上述代码时,会产生以下结果 -
    
    My name is Alex and weight is 21 kg!
    
    这是可以与 % 一起使用的完整符号集列表 -
    序号 格式符号和转换
    1
    %c
    特点
    2
    %s
    在格式化之前通过 str() 进行字符串转换
    3
    %i
    有符号十进制整数
    4
    %d
    有符号十进制整数
    5
    %u
    无符号十进制整数
    6
    %o
    八进制整数
    7
    %x
    十六进制整数(小写字母)
    8
    %X
    十六进制整数(大写字母)
    9
    %e
    指数表示法(带小写字母“e”)
    10
    %E
    指数表示法(大写“E”)
    11
    %f
    浮点实数
    12
    %g
    %f 和 %e 中较短的一个
    13
    %G
    %f 和 %E 中较短的一个
    下表列出了其他支持的符号和功能 -
    序号 符号与功能
    1
    *
    参数指定宽度或精度
    2
    -
    左对齐
    3
    +
    显示标志
    4
    <sp>
    在正数前留一个空格
    5
    #
    添加八进制前导零 ( '0' ) 或十六进制前导 '0x' 或 '0X',具体取决于使用的是 'x' 还是 'X'。
    6
    0
    从左边开始用零填充(而不是空格)
    7
    %
    '%%' 给你留下一个单一的文字 '%'
    8
    (var)
    映射变量(字典参数)
    9
    m.n.
    m 是最小总宽度,n 是小数点后显示的位数(如果适用)
  • 三引号

    Python 的三重引号允许字符串跨越多行,包括逐字的 NEWLINE、TAB 和任何其他特殊字符。
    三重引号的语法由三个连续的single or double引号。
    
    #!/usr/bin/python3
    para-str = """this is a long string that is made up of
    several lines and non-printable characters such as
    TAB ( \t ) and they will show up that way when displayed.
    NEWLINEs within the string, whether explicitly given like
    this within the brackets [ \n ], or just a NEWLINE within
    the variable assignment will also show up.
    """
    print (para-str)
    
    执行上述代码时,会产生以下结果。请注意每个特殊字符是如何转换为打印形式的,一直到“up”之间字符串末尾的最后一个 NEWLINE。并关闭三重引号。另请注意,NEWLINE 出现在行尾的显式回车或其转义码 (\n) -
    
    this is a long string that is made up of
    several lines and non-printable characters such as
    TAB (    ) and they will show up that way when displayed.
    NEWLINEs within the string, whether explicitly given like
    this within the brackets [
     ], or just a NEWLINE within
    the variable assignment will also show up.
    
    原始字符串根本不将反斜杠视为特殊字符。您放入原始字符串中的每个字符都保持您编写它的方式 -
    
    #!/usr/bin/python3
    print ('C:\\nowhere')
    
    执行上述代码时,会产生以下结果 -
    
    C:\nowhere
    
    现在让我们使用原始字符串。我们会把表达式放在r'expression'如下 -
    
    #!/usr/bin/python3
    print (r'C:\\nowhere')
    
    执行上述代码时,会产生以下结果 -
    
    C:\\nowhere
    
  • Unicode 字符串

    在 Python 3 中,所有字符串都以 Unicode 表示。在 Python 2 中,内部存储为 8 位 ASCII,因此需要附加 'u' 以使其成为 Unicode。现在不再需要了。

    内置字符串方法

    Python 包括以下内置方法来操作字符串 -
    序号 方法与说明
    1 capitalize()
    将字符串的第一个字母大写
    2 center(width, fillchar)
    返回一个用fillchar填充的字符串,原始字符串以总宽度列为中心。
    3 count(str, beg = 0,end = len(string))
    如果给定起始索引 beg 和结束索引 end,则计算 str 在字符串或字符串的子字符串中出现的次数。
    4 decode(encoding = 'UTF-8',errors = 'strict')
    使用为编码注册的编解码器解码字符串。编码默认为默认字符串编码。
    5 encode(encoding = 'UTF-8',errors = 'strict')
    返回字符串的编码字符串版本;出错时,默认情况下会引发 ValueError,除非使用“忽略”或“替换”给出错误。
    6 endswith(suffix, beg = 0, end = len(string))
    确定字符串或字符串的子字符串(如果给出起始索引 beg 和结束索引 end)是否以后缀结尾;如果是,则返回 true,否则返回 false。
    7 expandtabs(tabsize = 8)
    将字符串中的制表符扩展为多个空格;如果未提供制表符大小,则默认为每个制表符 8 个空格。
    8 find(str, beg = 0 end = len(string))
    如果给定起始索引 beg 和结束索引 end,则确定 str 是否出现在字符串中或字符串的子字符串中,如果找到则返回索引,否则返回 -1。
    9 index(str, beg = 0, end = len(string))
    与 find() 相同,但如果未找到 str 则引发异常。
    10 isalnum()
    如果字符串至少有 1 个字符并且所有字符都是字母数字,则返回 true,否则返回 false。
    11 isalpha()
    如果字符串至少有 1 个字符并且所有字符都是字母,则返回 true,否则返回 false。
    12 isdigit()
    如果字符串仅包含数字则返回 true,否则返回 false。
    13 islower()
    如果字符串至少有 1 个大小写字符且所有大小写字符均为小写,则返回 true,否则返回 false。
    14 isnumeric()
    如果 unicode 字符串仅包含数字字符,则返回 true,否则返回 false。
    15 isspace()
    如果字符串仅包含空白字符,则返回 true,否则返回 false。
    16 istitle()
    如果字符串正确地“titlecased”则返回 true,否则返回 false。
    17 isupper()
    如果字符串至少有一个大小写字符并且所有大小写字符都是大写,则返回 true,否则返回 false。
    18 join(seq)
    将序列 seq 中元素的字符串表示合并(连接)为一个字符串,带有分隔符字符串。
    19 len(string)
    返回字符串的长度
    20 ljust(width[, fillchar])
    返回一个空格填充的字符串,原始字符串左对齐到总宽度列。
    21 lower()
    将字符串中的所有大写字母转换为小写字母。
    22 lstrip()
    删除字符串中的所有前导空格。
    23 maketrans()
    返回要在翻译函数中使用的翻译表。
    24 max(str)
    返回字符串 str 中的最大字母字符。
    25 min(str)
    返回字符串 str 中的最小字母字符。
    26 replace(old, new [, max])
    将字符串中所有出现的旧字符替换为新字符,或者如果给定了最大值,则最多出现最大字符数。
    27 rfind(str, beg = 0,end = len(string))
    与 find() 相同,但在字符串中向后搜索。
    28 rindex( str, beg = 0, end = len(string))
    与 index() 相同,但在字符串中向后搜索。
    29 rjust(width,[, fillchar])
    返回一个空格填充的字符串,原始字符串右对齐到总宽度列。
    30 rstrip()
    删除字符串的所有尾随空格。
    31 split(str="", num=string.count(str))
    根据分隔符 str 拆分字符串(如果未提供则为空格)并返回子字符串列表;如果给定,最多分成 num 个子字符串。
    32 splitlines( num=string.count('\n'))
    在所有(或 num)个 NEWLINE 处拆分字符串并返回删除了 NEWLINE 的每一行的列表。
    33 startswith(str, beg=0,end=len(string))
    确定字符串或字符串的子字符串(如果给出起始索引 beg 和结束索引 end)是否以子字符串 str 开头;如果是,则返回 true,否则返回 false。
    34 strip([chars])
    对字符串执行 lstrip() 和 rstrip()
    35 swapcase()
    反转字符串中所有字母的大小写。
    36 title()
    返回字符串的“titlecased”版本,即所有单词以大写开头,其余为小写。
    37 translate(table, deletechars="")
    根据翻译表 str(256 chars) 翻译字符串,删除 del 字符串中的那些。
    38 upper()
    将字符串中的小写字母转换为大写字母。
    39 zfill (width)
    返回用零填充到宽度字符总数的原始字符串;用于数字,zfill() 保留给定的任何符号(减去一个零)。
    40 isdecimal()
    如果 unicode 字符串仅包含十进制字符,则返回 true,否则返回 false。