Python 字符串 str
Python 字符串 str#
类定义#
- 对象转字符串
- str (object=’’) 返回 object.__str__() 或 repr (object)
- 字节转字符串
- 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 {…}’取代
- encoding 编码转换
- str(bytes_or_buffer, encoding=sys.getdefaultencoding() , errors=’strict’)
类的方法 (部份建構成 Python 本身字符串的语法)#
字符串本身
常数表示法
单引号 ‘…’
双引号 “…”
三重引号 ‘’’…’’’ 或 “””…””” 注:换行符号 ‘\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
字符串运算
- 字符串相加 string.__add__(value)
- 字符串重复 string.__mul__(value) 注:供 value*string 语法使用
- 字符串重复 string.__rmul__(value) 注:供 string*value 语法使用
字符串比较
- 等于 string.__eq__(value)
- 不等于 string.__ne__(value)
- 大于 string.__gt__(value)
- 大于等于 string.__ge__(value)
- 小于 string.__lt__(value)
- 小于等于 string.__le__(value)
字符串搜索
- 从头找副字符串位置 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) 注:搜索不会重复处理
字符串取代
- 子字符串 string.replace (old, new, count=-1) 注: count 缺省值为 - 1 代表全部取代;取代不会重复处理
- 以空白’ ‘取代定位符’\t’ string.expandtabs (tabsize=8) 注:缺省为 8 个空格
字符串空白字符或指定字符去头去尾
- 去头去尾 string.strip (chars=None)
- 去头 string.lstrip (chars=None)
- 去尾 string.rtrip (chars=None)
字符串寛度的位置调整及填入字符
- 置中 string.center (width, fillchar=' ')
- 置左 string.ljust (width, fillchar=' ')
- 置右 string.rjust (width, fillchar=' ')
- 左填 '0' string.zfill (width)
字符串分割与组合
- 多重左分割 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 都会造成分行.
字符串格式转换
格式化
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, 该字母会被删除.
- table {key:value, }
- 建立转换表 string.maketrans (dictionary | x, y, z)
- dictionary 直接建表
- x, y, z 其中 x, y 须同长度的字符串,由 x 对应到 y, z 字符串表示为 None, 要删除的字母.
字符串中字母
- 转换
- 每个字母转大写 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 协议》,转载必须注明作者和本文链接