一.字符串编码
- string.encode(encoding=‘UTF-8’, errors=‘strict’)以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
>>> s='abcdd测试'
>>> s.encode(encoding='gbk', errors='strict')
b'abcdd\xb2\xe2\xca\xd4'
在python 3中,字符使用unicode 编码。
- bytes.decode(encoding=‘UTF-8’, errors=‘strict’)以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除 非 errors 指 定 的 是 ‘ignore’ 或 者’replace’
>>>text=b'abcdd\xb2\xe2\xca\xd4'
>>>text.decode(encoding='gbk',errors='strict')
'abcdd测试'
二 格式化字符串
- 使用%号。格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符。
>>> text="I'm %s. I'm %d year old" % ('Vamei', 99)
>>> text
"I'm Vamei. I'm 99 year old"
同时可以使用字典来传递真实值。
>>> text=("I'm %(name)s. I'm %(age)d year old" % {'name':'Vamei', 'age':99})
>>> text
"I'm Vamei. I'm 99 year old"
格式符表如下:
%s 字符串 (采用str()的显示)
%r 字符串 (采用repr()的显示)
%c 单个字符
%b 二进制整数
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数 (基底写为e)
%E 指数 (基底写为E)
%f 浮点数
%F 浮点数,与上相同
%g 指数(e)或浮点数 (根据显示长度)
%G 指数(E)或浮点数 (根据显示长度)
%% 字符"%"
格式化字符串
三、转义字符
在需要在字符中使用特殊字符时,python用反斜杠()转义字符。
四、查找
- string.find(str, beg=0, end=len(string))
检测 str 是否包含在 string 中。如果 beg 和 end 指定范围,则检查是否包含在指定范围内, 如果是,则返回开始的索引值,否则返回-1
>>> text="12345678901234567890"
>>> text.find("34")
2
>>> text.find("34",10)
12
>>> text.find("34",14)
-1
- string.rfind(str, beg=0, end=len(string)) : 类似于 find()函数,不过是从右边开始查找.
>>> text.rfind("34")
12
>>> text.rfind("34",6,12)
-1
>>> text.rfind("34",2,8)
2
- string.index(str, beg=0, end=len(string)) : 类似于 find()函数,但是找不到报异常.
>>> text.index("34")
2
>>> text.index("43")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
- string.rindex(str, beg=0, end=len(string)) : 类似于 rfind()函数,但是找不到报异常.
五 统计
- string.count(str, beg=0, end=len(string))
检测 str 是否包含在 string 中出现的次数,如果 beg 和 end 指定范围,则检查是否包含在指定范围内
>>> text="12345678901234567890"
>>> text.count("345")
2
六、分隔
- string.split(str="", num=string.count(str))
以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
>>> text.split("34")
['12', '56789012', '567890']
>>> text.split("34",1)
['12', '5678901234567890']
>>>
- string.splitlines([keepends])
按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 - string.partition(str):
有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str)。如果 string 中不包含str 则 string_pre_str == string.
>>> text
'12345678901234567890'
>>> text.partition("34")
('12', '34', '5678901234567890')
>>> text.partition("43")
('12345678901234567890', '', '')
- string.rpartition(str) : 类似于 partition()函数,不过是从右边开始.
七、判断
- string.startswith(obj, beg=0,end=len(string)):
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
>>> text.startswith("123")
True
>>> text.startswith("0123")
False
- string.endswith(obj, beg=0,end=len(string))检查字符串是否是以 obj 结尾,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
- string.isalnum() 所有字符都是字母或数字则返回 True,否则返回 False
- string.isalpha() 所有字符都是字母则返回 True,否则返回 False
- string.isdigit() 所有字符都是数字则返回 True,否则返回 False
>>> text
'12345678901234567890'
>>> text.isdigit()
True
- string.isupper() 所有字符都是大写则返回 True,否则返回 False
>>> text
'12345678901234567890'
>>> text.isupper()
False
>>> text
'12345678901234567890A'
>>> text.isupper()
True
- string.islower() 所有字符都是小写则返回 True,否则返回 False
- string.isspace() 只包含空格则返回 True,否则返回 False
八. 大小写
- string.capitalize() 把字符串的第一个字符大写
- string.upper() 转换 string 中的小写字母为大写
- string.lower() 转换 string 中的小写字母为大写
九.对齐
- string.ljust(width) 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
- string.rjust(width) 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
- string.center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
十.合并 ,裁剪
- string.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
>>> seq
('123', '3', 'a')
>>> ':'.join(seq)
'123:3:a'
- string.strip([obj])删除 string 字符串前后的的obj,如果不传参数,删除前后空格
- string.lstrip([obj])删除 string 字符串左面的obj,如果不传参数,删除左面空格
- string.rstrip([obj])删除 string 字符串右面的obj,如果不传参数,删除右面空格