Python 字符串 str

Python 字符串 str

类定义

  1. 对象转字符串
    • str(object=’’) 返回object.__str__()或repr(object)
  2. 字节转字符串
    • str(bytes_or_buffer, encoding=sys.getdefaultencoding() , errors=’strict’)
      • encoding 编码转换
        • sys.getdefaultencoding() := ‘utf-8’
      • errors 错误处理
        • ‘strict’ - UnicodeEncodeError Exception
        • ‘ignore’ - 忽略错误, 跳过不处理
        • ‘replace’ - 有错误以’�’取代 (‘\ufff’)
        • ‘xmlcharrefreplace’ - 以XML方式来表示, 比如’灣’
        • ‘backslashreplace’ - ‘\\NNNN’取代
        • ‘namereplace’ - ‘\\N{…}’取代

类的方法 (部份建構成 Python 本身字符串的语法)

  1. 字符串本身

    • 常数表示法

    • 单引号 ‘…’

    • 双引号 “…”

    • 三重引号 ‘’’…’’’ 或 “””…””” 注: 换行符号 ‘\n’ 会被加入

    • 字符串组合 (‘…’ “…” ‘’’…’’’ “””…”””) 注: 最适合长字符串分行使用

    • \在字符串中为转义字符, r’…’可禁用转义

    • 各参数中有start, end, 代表字符串范围为string[start : end]

    • 建立新对象 string.__new__(*args, **kwargs)

    • 字符长度 string.__len__()

    • 位元组长度 string.__sizeof__()

    • 字符串表达 string.__repr__()

    • 对象属性调用 string.__getattribute__(name) 当 属性 name 被访问时自动被调用, 无论 name 是否存在.

    • 索引取得 string.__getitem__(key) 注: 相当于 string[key]

    • 参数传递 string.__getnewargs__()

    • 迭代使用 string.__iter__()

    • 哈希值 string.__hash__()

    • 空白字符(Whitespace)

      符号 代码 编码 中文说明 英文说明
      HT ‘\t’ 0x09 水平制表符 Horizontal Tab
      LF ‘\n’ 0x0A 换行 Line Feed
      VT 0x0B 垂直制表符 Vertical Tab
      FF 0x0C 换页 Form Feed
      CR ‘\r’ 0x0D 回车 Carriage Return
      FS 0x1C 文件分隔符 File Separator
      GS 0x1D 组分隔符 Group Separator
      RS 0x1E 记录分隔符 Record Separator
      US 0x1F 单位分隔符 Unit Separator
      HE 0x85 水平省略号 Horizontal Ellipsis
      NBSP 0xA0 不间断空格 Non-Breaking Space
  2. 字符串运算

    • 字符串相加 string.__add__(value)
    • 字符串重复 string.__mul__(value) 注: 供value*string语法使用
    • 字符串重复 string.__rmul__(value) 注: 供string*value语法使用
  3. 字符串比较

    • 等于 string.__eq__(value)
    • 不等于 string.__ne__(value)
    • 大于 string.__gt__(value)
    • 大于等于 string.__ge__(value)
    • 小于 string.__lt__(value)
    • 小于等于 string.__le__(value)
  4. 字符串搜索

    • 从头找副字符串位置 string.index(sub, start, end) 注: 找不到时会出错 ValueError
    • 从尾找副字符串位置 string.rindex(sub, start, end) 注: 找不到时会出错 ValueError
    • 从头找副字符串位置 string.find(sub, start, end) 注: 找不到会返回 -1
    • 从尾找副字符串位置 string.rfind(sub, start, end) 注: 找不到会返回 -1
    • 子字符串出现的次数 string.count(sub, start, end) 注: 搜索不会重复处理
  5. 字符串取代

    • 子字符串 string.replace(old, new, count=-1) 注: count缺省值为-1代表全部取代; 取代不会重复处理
    • 以空白’ ‘取代定位符’\t’ string.expandtabs(tabsize=8) 注: 缺省为8个空格
  6. 字符串空白字符或指定字符去头去尾

    • 去头去尾 string.strip(chars=None)
    • 去头 string.lstrip(chars=None)
    • 去尾 string.rtrip(chars=None)
  7. 字符串寛度的位置调整及填入字符

    • 置中 string.center(width, fillchar=' ')
    • 置左 string.ljust(width, fillchar=' ')
    • 置右 string.rjust(width, fillchar=' ')
    • 左填'0' string.zfill(width)
  8. 字符串分割与组合

    • 多重左分割 string.split(sep=None, maxsplit=-1) 注: 按sep来分割成list, maxsplit最大分割数, -1表全部分割.
    • 多重右分割 string.rsplit(sep=None, maxsplit=-1) 注: 按sep来分割成list, maxsplit最大分割数, -1表全部分割.
    • 组合 string.join(iterable) 注: 以string作为间隔来组合iterable序列中的字符串
    • 从左三分割 string.partition(sep) 注: 以sep分割, 返回 [前字符串, sep, 后字符串], 找不到sep, 返回 [字符串, '', '']
    • 从右三分割 string.rpartition(sep) 注: 以sep分割, 返回 [前字符串, sep, 后字符串], 找不到sep, 返回 [字符串, '', '']
    • 行分割 string.splitlines(keepends=False) 注: 返回每一行的list, keepends表示分行符保留, LF, VT, FF, CR, FS, GS, RS, HE 都会造成分行.
  9. 字符串格式转换

    • 格式化

      • string.__format__(format_spec)

      • string.__mod__(value) 注: string中%[flags] [width] [.precision] type指定格式来转换value, 供语法 string % value 使用

      • string.__rmod__(value) 注: string中%[flags] [width] [.precision] type指定格式来转换value, 供语法 value % string 使用; 本函数功能未建立.

      • string.format(*args, **kwargs) 替代string中的{ }

      • string.format_map(mapping) 以mapping替代string中的{ }

        >>> class Class():
        >>>     def __missing__(self, key):
        >>>         return key
        >>> print('{this} is a {book}, not a {bag} !'.format_map(Class(this='that', book='book')))
        that is a book, not a bag !
        >>>
    • 字符串转换

      • 转字符串 string.__str__()
      • 编码 string.encode(encoding='utf-8', errors='strict')
      • 按表转码 string.translate(table)
        • table {key:value, }
          • key: Unicode ordinal
          • value: Unicode ordinal, strings 或 None
        • table 可以是字典或列表的实例, 必须具有来自__getitem__的lookup/indexing方法
        • 如果表中找不到, 该字母直接输出; 如果value是None, LookupError Exception, 该字母会被删除.
      • 建立转换表 string.maketrans(dictionary | x, y, z)
        • dictionary 直接建表
        • x, y, z 其中 x, y 须同长度的字符串, 由x对应到y, z字符串表示为None, 要删除的字母.
  10. 字符串中字母

    • 转换
      • 每个字母转大写 string.upper()
      • 每个字母转小写 string.lower()
      • 每个字母转小写 string.casefold() 注: 会转换某些特殊字符, 而string.lower()不会, 比如扩充ASCII码.
      • 只有字符串的第一个字母转大写, 其他转小写 string.capitalize()
      • 每个字第一个字母转大写, 其他转小写 string.title()
      • 每个字母大小写互换 string.swapcase()
    • 判断
      • 包含子字符串 string.__contains__(value)
      • ASCII码 string.isascii() 注: 字码0~127, 还有空字符串''都为True
      • 字母或数字 string.isalnum() 注: 絶大部份的字码都是, 没什么用
      • 字母 string.isalpha() 注: 絶大部份的字码都是, 没什么用
      • 大写字母 string.isupper()
      • 小写字母 string.islower()
      • 每个字第一个字母大写, 其他为小写 string.istitle()
      • 十进制数(0~9) string.isdecimal()
      • 数字 string.isdigit() 注: 包含 Numeric_Type 为 Digit 及 Decimal
      • 数字string.isnumeric() 注: 包含 Numeric_Type 为 Digit, Decimal 及 Numeric
      • Python有效的标识符 string.isidentifier()
        • Python的保留字 keyword.iskeyword(string)
      • 可打印字 string.isprintable() 注: 判断repr(string); 空字符串也是True
      • 空白字符串 string.isspace()
      • 结尾字符串 string.endswitch(suffix, start, end) 注: 结尾字符串可以是多条件OR判断, 以tuple表示.
      • 起始字符串 string.startswith(prefix, start, end) 注: 起始字符串可以是多条件OR判断, 以tuple表示.
本作品采用《CC 协议》,转载必须注明作者和本文链接
Jason Yang
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!