一、字符串的编码和解码
1、ASCII 码:采用一个字节最字符进行编码,最多只能表示 256 个符号。
2、UTF-8编码:以一个字节表示英语字符(兼容 ASCII),以三个字节表示中文及其他语言。
3、GB2312:使用一个字节表示英语,两个字节表示中文。
Python 3.x 使用的是 UTF-8 或 UTF-16。
二、常用字符串处理函数
字符串属于不可变序列类型,使用单引号、双引号、三单引号或三双引号作为界定符,且不同的界定符直接可以嵌套。
1、format() 函数:
用于字符串的格式化,通过 {} 和 : 来代替以前的 %
format() 函数可以接受不限个参数,位置可以不按顺序。
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
也可以设置参数:
print("网站名:{name}, 地址 {url}".format(name="百度", url="www.baidu.com"))
# 通过字典设置参数
site = {"name": "百度", "url": "www.baidu.com"}
print("网站名:{name}, 地址 {url}".format(**site))
# 通过列表索引设置参数
my_list = ['百度', 'www.baidu.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
结果为:
网站名:百度, 地址 www.baidu.com
网站名:百度, 地址 www.baidu.com
网站名:百度, 地址 www.baidu.com
也可以向 str.format() 传入对象:
class AssignValue(object):
def __init__(self, value):
self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value)) # "0" 是可选的
结果为:
value 为: 6
str.format() 也可以用于格式化数字:
>>> print("{:.2f}".format(3.1415926));
3.14
2、定位:
find() 和 rfind() 方法分别用来查找一个字符串在另一个字符串指定范围(默认为整个字符串)中首次和最后一次出现的位置,如果不存在则返回 -1。
index() 和 rindex() 方法用来返回一个字符串在另一个字符串指定范围中首次和最后一次出现的位置,如果不存在则抛出异常。
count() 用来返回一个一个字符串在另一个字符串中出现的次数。
3、分割:
split() 和 rsplit() 方法分别用来以指定字符为分隔符,从字符串左端和右端开始将其分割成多个字符串,并返回包含分割结果的列表。如果不指定分隔符,则字符串中的任何空白符号(包括空格、换行符、制表符等)都将被认为是分隔符,返回包含最终分割结果的列表。还允许指定最大分割次数。
partition() 和 rpartition() 用来以指定字符串为分割符将原字符串分割为 3 部分,即分割符前的字符串、分隔符字符串、分隔符后的字符串,如果指定的分隔符不再原字符串中,则返回原字符串和两个空字符串。
4、字符串连接
jion():用来将列表中多个字符串进行连接,并在相邻的两个字符串直接插入指定字符串。
5、字符转换
lower()、upper()、capitalize()、title()、swapcase() 分别用来将字符串转换为小写、大写字符串,将字符串首字母变为大写,将每个单词的首字母变为大写,以及大小写互换。
6、查找与替换
replace():用来替换字符串中指定字符或字符串的所有重复出现,每次只能替换一个字符或子字符串。
maketrans() 方法用来生成字符映射表,translate() 方法则按映射表关系转换字符串并替换其中的字符,使用这两种方法的组合可以同时处理多个不同的字符。
7、过滤
strip()、rstrip()、lstrip() 分别用来删除两端、右端、左端的空白字符或连续的指定字符。
8、startswith()、endswith()
用来判断字符串是否以指定字符串开始或结束。可以接收两个整数参数来限定字符串的检测范围,还可以接收一个字符串元组作为参数来表示前缀和后缀。
9、isalnum()、isalpha()、isdigit()、isspace()、isupper()、islower()
用来测试字符串是否为数字或字母、是否为字母、是否为数字字符、是否为空白字符、是否为大写字母、是否为小写字母。
10、center()、ljust()、rjust()
返回指定款定的新字符串,原字符串居中、左对齐、右对齐出现在新字符串中,如果指定的宽度大于字符串胀肚,则使用指定的字符(默认为空格)填充。
11、len():计算序列的长度
max():求最大值
三、驻留机制
Python 支持字符串驻留机制,即:对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本。
长字符串不遵守驻留机制。