字符串:由0个或多个字符的集合
字符串’’或””
常规字符串跨多行,只要在行尾上加上’'反斜杠
当字符串内有干扰时可用’'反斜杠进行转义
长字符串
用三个连续的双引号或单引号来包很长的字符串,可在中间换行
ptint:('''To be,
or not to be:
that is the question:''')
原始字符串
其内的字符串不会对反斜杠进行特殊处理
print:('C:\Program Files\nowhere')
注意此处的r’,表示是原始字符串,不会显示,且其中的’可为”或者”‘
原始字符串无法以单个反斜杠结尾。
字符串序号
其内部为正向递增序号:0,1,2,3…(x-1)
或反向递减序号:-x,-(x-1),-(x-2)…-1
字符串的使用
索引:返回字符串中的单个字符 <字符串>[M]
切片:返回字符串中的一串字符串 <字符串>[M:N]
M缺失表示至开头,N缺失表示至结尾
<字符串>[M:N:K]
K表示根据步长K进行切片,K可为负数,进行反向符
操作符
x + y 连接x和y
n * x 或 x * n 复制n次x
x in s 如果x是s的子字符串,返回Ture,否则返回False
处理函数
函数 | 说明 |
---|---|
len(x) | 返回长度 |
str(x) | 返回任意类型x所对应的字符串形式 |
hex(x)或oct(x) | 返回整数x的十六进制或者八进制小写形式字符串 |
chr(u) | u为Unicode编码,返回其对应字符 |
ord(x) | x为字符,返回其对应Unicode编码 |
处理方法
函数 | 说明 |
---|---|
str.center(x,y=None) | 在str两边填充字符,默认为空格 |
str.find(x,y=None,z=None) | 在str中寻找x,如果找到,返回子串第一个字符的索引,否则返回-1,还可以定义查找的起止点 |
str.lower()或str.upper() | 返回字符串的副本,将字符串str的全部字符小写/大写 |
str.split(sep) | 返回一个列表,由str根据sep被分隔的部分组成 |
str.count(sub) | 返回子串sub在str中出现的次数 |
str.replace(old,new) | 返回字符串str副本,所有old子串被new子串替换 |
str.center(width[,fillchar]) | 字符串str在宽度为width的字符串中居中,空余量由fillchar填充 |
str.strip(chars) | 去除字符串str的开头和结尾中所有的chars字符中的元素 |
str.join(iter) | 在字符串iter所有元素的间隔中都加一个str,主要用于字符串的分隔 |
str.translate | 预先建立转换表,根据转换表转换,但是只能进行单字符转换 |
translate说明:
>>>table = str.maketrans('cs', 'kz')
>>>'this is an incredible test'.translate(table)
'thiz iz an inkredible tezt'
还可以添加第三个参数选择相应的删除
>>>table = str.maketrans('cs', 'kz', ' ')
>>>'this is an incredible test'.translate(table)
'thizizaninkredibletezt'
字符串格式化
格式化是对字符串进行格式表达的方式
<模板字符串>.format(<逗号分隔的参数>)
槽{}:在模板字符串的槽{}中添加参数
槽内部对格式化的配置方式
{<参数序号>:<格式控制标记>}
指定宽度:
"{num:10}".format(num = 3)
' 3'
"{name:10}".format(name = "Bob")
'Bob '
指定精度:
"{pi:.2f}".format(pi=pi)
'3.14'
添加千分隔符:
"One googol is {:,}".format(10**100)
'One googol is 10,000,000,000,000,000,…'
同时指定其他格式的时候,逗号要放在宽度和表示精度的句号之间。
指定对齐:
左对齐、右对齐、居中,分别使用<、>、^
"{0:<10.2f}".format(pi)
'3.14 'Python
指定填充:
可以在指定宽度和精度的前面添加一个标志,可以是’0’、’+’、’-‘
"{:010.2f}".format(pi)
'0000003.14'
添加特定填充字符:
"{:$^15}".format(WIN BIG)
'$$$$WIN BIG$$$$'
可用=来表示字符是填充在符号与数字之间
"{:=10.2f}".format(-pi)
'- 3.14'
‘#’放在说明符与宽度之间,可以触发另一种转换方式。
二进制、八进制、十六进制:
"{:b}".format(42)
'101010'
"{:#b}".format(42)
'0b101010'
十进制会要求必须包含小数点
"{:#g}".format(42)
'42.0000'
字符串设置中的类型说明符
说明符 | 说明 |
---|---|
b | 用二进制数来表示 |
c | 用Unicode码点来表示 |
d | 将整数视为十进制来表示 |
e | 用科学计数法表示(指数用e) |
E | 用科学计数法表示(指数用E) |
f | 将小数表示为定点数 |
F | 与f相同,但对于特殊值(nan和inf),用大写表示 |
g | 自动在定点表示法和科学计数法之间做出选择,默认用于小数说明 |
G | 与g相同,但使用大写来表示指数与特殊值 |
n | 与g相同,但插入随区域而异的数字分隔符 |
o | 用八进制来表示 |
s | 保持字符串的格式不变 |
x | 用十六进制表示 |
X | 与x相同,但使用大写字母 |
% | 将数表示为百分比值 |
字符串的编码为Unicode
使用16位或者32的十六进制字面量(加前缀\u或\U)
使用字符的Unicode名称(\N{name})
为了进行文件写入、C语言互传输等,可转换为类型:不可变的bytes和可变的bytearray