Python 字符串
字符串、整数、元组不可变。
1,三个引号能包围多行字符串,这种字符串常常出现在函数声明的下一行,用来注释函数的功能。这个注释被认为是函数的一个默认属性,可以通过“函数名.__doc__”的形式进行访问。
print("abs.__doc__的返回值:\n",abs.__doc__)
print("")
print("len.__doc__的返回值:\n",len.__doc__)
print("")
print("max.__doc__的返回值:\n",max.__doc__)
2,转义字符
转义字符用于表示一些在某些场合下不能直接输入的特殊字符。转义符由反斜杠(\)引导,与后面相邻的字符组成了新的含义。
eg: 在由单引号包围的字符串中再次使用了单引号,代码运行时将会报错。
print('type('abc')') #会报错,因为在单引号里面再次使用了单引号
print('type("abc")') #在里面使用双引号,不会报错
print("type('abc')") #或者,在外面使用双引号,里面使用单引号,也不会报错,总之就是里面和外面的引号形式不要相同
print('type(\'abc\')') #加个反斜杠,表示转义符,运行不会出错
常用的转义符
转义符 | 含义描述 | 转义符 | 含义描述 |
\(在行尾时) | Python的续行符 | \n | 换行 |
\\ | 一个反斜杠符号 | \t | 横向制表符 |
\' | 单引号 | \r | 回车 |
\" | 双引号 | \f | 换页 |
\a | 响铃 | \ooo | 八进制数表示的ASCII码对应字符 |
\b | 退格(Backspace) | \xhh | 十六进制数表示的ASCII码对应字符 |
\0 | 空 | \other | 其他的字符以普通格式输出 |
字符串的格式化
1,用%操作符格式化字符串
a. 格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式符为显示值(即需要设置格式的字符串参数)预留位置。
例子:将字符串A设置为B格式,则B为格式符,而A为字符串参数,即显示值
b. Python用一个元组tuple将多个值传递给模板,即需要设置格式的字符串参数是放在元组中的,并以逗号隔开
c. 模板格式:
%[ (name) ] [ flags ] [ width ] . [precision] typecode
typecode:必须参数,指定格式控制符
参数解释:
name:可选参数,当需要格式化的值为字典类型时,用于指定字典的键Key.
flags:可选参数,
+:表示右对齐,正数前添加正号,负数前添加负号。
-:表示左对齐,正数前无负号,负数前添加负号。
空格:表示右对齐,正数前添加空格,负数前添加负号。
0:表示右对齐,正数前无符号,负数前添加负号,并用0填充空白处。
width:可选参数,指定格式字符串的占用宽度。
precision:可选参数,指定数值型数据保留的小数位数
d. 常用的字符串格式化控制符
符号 | 描述 | 备注 |
%d | 格式化整数,十进制 | |
%s | 格式化字符串 | |
%f | 格式化浮点数,可指定小数点后的精度 | |
%e | 用科学计数法格式化浮点数 | |
%c | 格式化单个字符及其ASCII码 | 返回的结果都是一个字符,它的参数只能是int或char, |
%% | 返回一个% | |
%o(字母o) | 八进制数字 | |
%x | 十六进制数字,其中的字母小写 | |
%X | 十六进制数字,其中的字母大写 |
e. 实例
%c格式符的使用:它的参数不能是字符串,只能是单个字符,否则会报错。TypeError: %c requires int or char
返回结果:如果传入的是一个数字,则返回其在ASCII码中对应的字符;如果传入的是字符,则返回字符。
print("%c"%"good")
TypeError: %c requires int or char
%e格式符使用:
可以看出:%e与%E并没有什么太大区别,只是返回结果的底数10是用小写e表示,还是大写E表示
2,用format( )方法格式化字符串
从Python2.6开始,增加了str.format( )方法
(1)模板字符串与format( )方法中参数的对应关系
str.format( )方法中str被称为模板字符串,其中包括多个由“{ }”表示的占位符,这些占位符接收format( )方法中的参数。
模板字符串是一个由字符串和槽组成的字符串。槽用大括号{ }显示。
str模板字符串与format( )方法中的参数对应关系有以下3种情况:
a. 位置参数匹配
如果占位符{ }为空(没有表示顺序的序号),将会按照参数出现的先后次序进行匹配。如果占位符指定了参数的序号,则会按照序号替换对应参数。
b. 使用键值对的关键字参数匹配
format( )方法中的参数用键值对形式表示时,在模板字符串中用“ 键 ”来表示。
c. 使用序列的索引作为参数匹配
format( )方法中的参数是列表或元组,可以用其索引(序号)来匹配
(2)模板字符串str的格式控制
模板字符串中既包括参数序号,还包括格式控制信息,语法格式如下:
{<参数序号>:<格式控制标记>.}
: | fill,填充 | align, 对齐 | sign,数字前的符号 | width,宽度 | <,> | precision,精度 | type,类型 |
引导符号 |
用于填充 的单个字符 |
< 左对齐 > 右对齐 ^居中对齐 |
+ 在正数前添加正号,负数前添加负号 - 正数前无符号,负数前添加负号 空格:在正数前添加空格,负数前添加负号 |
指定格式化 后的字符串 所占的宽度 |
数字的千位分隔符,适用于整数或浮点数 |
浮点数小数部分的精度 或 字符串的最大输出长度 |
整数类型 b,c,d,o,x,X 浮点数类型 e,E,f,% |
<填充>,<对齐>,<宽度>,它们是相关字段,主要用于对显示格式的规范。
模板字符串是一个由字符串和槽组成的字符串。槽用大括号{ }显示。
注意:
宽度指当前槽的设定输出字符宽度,如果该槽参数实际值比宽度设定值大,则使用参数实际长度。
如果该槽参数实际值比宽度设定值小,则按照对齐指定方式在宽度内对齐,默认以空格字符补充。
(3)type:格式化的类型
整数常用的格式化类型:
b:将十进制整数转换成二进制,然后格式化。
c:输出整数对应的Unicode字符。
d:输出整数的十进制格式。
o:将十进制整数转换成八进制,然后格式化。
x:将十进制整数转换成小写十六进制。
X:将十进制整数转换成大写十六进制。
浮点数常用的格式化类型:
e:输出浮点数对应的小写字母e的指数形式。
E:输出浮点数对应的大写字母E的指数形式。
f:输出浮点数的标准浮点形式,默认保留小数点后6位。
%:输出浮点数的百分比形式。
大小写X:
print("大小写X:") print("{:x}".format(234)) print("{:X}".format(234))
小写b:
print("小写b:") print("{:b}".format(4)) # print("{:B}".format(4)) #报错,没有大写形式
小写o:
print("小写o:") print("{:o}".format(4)) # print("{:O}".format(4)) #报错,没有大写形式
大小写e:
print("大小写e:") print("{:e}".format(400)) print("{:E}".format(400)) print("{:.2e}".format(400)) print("{:.2E}".format(400)) print("{:.3e}".format(400)) print("{:.3E}".format(400))
字符串的操作符
操作符 | 描述 | 备注 |
+ | 连接字符串,str1+str2 | |
str *n, n* str | 重复输出字符串指定次数,str*n | “hello”*2, 返回hellohello |
x in str | 如果x是str的子串,则返回True, 否则返回False | |
x not in str | 如果x不是str的子串,则返回True, 否则返回False | |
r/R | 返回原始字符串,防止对输入的字符串进行转义。在输入的字符串的第一个引号前加上字母r或R | print(r"\n")等价于print("\\n"),输出\n |
b | 返回二进制字符串。在原字符串的第一个引号前加上字母b,可用于书写二进制文件,如b"123" | |
id | id(str),返回字符串在内存中的标识 |
id 使用方法:
二进制文件b使用方法:
是否包含子串,in, not in , 防止字符串转义r ,使用说明:
字符串处理函数
字符串的大小写转换函数
lower( ) | 将字符串中的字符都转换为小写 |
upper( ) | 将字符串中的字符都转换为大写 |
capitalize( ) | 将字符串的第一个字符转换为大写,其余转换为小写; capitalize只是将第一个字符大写 |
title( ) | 将字符串中的所有单词首字母大写,其余转换为小写。(capitalize只是将第一个字符大写) |
swapcase( ) | 将字符串中的大小写字符互换,即大写字符转换为小写,小写字符转换为大写 |
字符串的查找替换函数
string.find(str,start,end) | 返回子串str首次出现在string中的位置,找不到返回-1;如果指定start和end,则在指定范围内进行查找。 |
string.index(str,start,end) | 返回子串首次出现在string中的位置,找不到报错;同find( )方法 |
string.rfind(str,start,end) | 类似于find( )函数,从右侧开始查找 |
string.rindex(str,start,end) | 类似于index()函数,从右侧开始查找 |
string.replace(old,new,count) | 字符串中的old替换成new,count指定替换次数 |
#不论是从左边查找,还是从右边查找,返回的位置索引号都是从左边开始数,第一个位置是0,
print("从左边查找:","goodoodo".find("d")) #从左边查找第一个出现的d,返回其位置索引
print("从右边查找:","goodoodo".rfind("d")) #从右边查找第一个出现的d,返回其位置索引,只不过其位置索引号是从左边数的
print("替换2次:","goodood".replace("o",'K',2))
print("替换3次:","goodood".replace("o",'K',3))
字符串头尾判断函数
string.startswith(str,start,end) | 检查字符串string是否以str开头,如果是,返回True, 否则返回False;start和end指定查找的范围 |
string.endswith(str,start,end) | 检查字符串string是否以str结尾,如果是,返回True, 否则返回False;start和end指定查找的范围 |
str="hi,Python!hi,Java!"
print(str.startswith("hi")) #True
print(str.startswith("hi",3)) #False, 从str的第三个字符开始判断,是否以hi开头
print(str.endswith("Java!")) #True
print(str.endswith("hi",3,12)) #True,判断str的第3——12个字符,是否以" hi "结尾
字符串的计算函数
len(string) | 返回字符串的长度 | 不能写成string.len( ) |
max(string) | 返回字符串中最大字符 | 不能写成string.max( ) |
min(string) | 返回字符串中最小字符 | 不能写成string.min( ) |
string.count(str,start,end) | 返回str在字符串string中出现的次数;start和end指定查找的范围 |
print(max("hello")) #返回o,因为hello中,o对应的ASCII码最大
print(min("good")) #返回d
# print("hello".max()) #不能这样使用,会报错
print(len("hello"))
# print("hello".len()) #不能这样使用,会报错
print("hekkoddkk".count("k")) #统计出现指定子串的次数
字符串的拆分合并函数
string.split( sep, num ) | sep指定分隔符,num指定分割次数 。 |
a.join(string) | 以a作为连接符,将序列string中的元素以指定的字符a连接生成一个新的字符串 |
a.join(b):a是插入者,b是被插入者;把a插入到b中每两个字符之间,所以使用时注意顺序。
删除字符串中的空格函数
string.lstrip( ) | 删除字符串左边的空格 |
string.rstrip( ) | 删除字符串右边,即末尾的空格 |
string.strip(chars) | 删除字符串左右两边 chars中列出的字符 |
字符串的对齐函数
center(width, fillchar) | width指定返回的字符串宽度,center说明字符串居中显示,fillchar为填充的字符,默认为空格 |
ljust(width, fillchar) | 返回一个左对齐,指定宽度的字符串,fillchar为填充的字符,默认为空格 |
rjust(width, fillchar) | 返回一个右对齐,指定宽度的字符串,fillchar为填充的字符,默认为空格 |
字符串的判断函数
函数名 | 功能描述 | 备注 |
isalnum( ) | 如果字符串至少包含有一个字符,并且所有字符都是字母或数字,返回True;否则返回False | 至少有一个字符 |
isalpha() | 如果字符串至少包含有一个字符,并且所有字符都是字母,返回True;否则返回False | 至少有一个字符 |
isdigit( ) | 如果字符串只包含数字,返回True;否则返回False | 可以判断 “ ”,也可以判断二进制数,如b'342' |
isnumeric( ) | 如果字符串中只包含数字字符,返回True;否则返回False | 可以判断“ ”,但不能判断二进制数 |
isdecimal( ) | 如果字符串只包含十进制字符,返回True;否则返回False | 可以判断“ ”,但不能判断二进制数 |
islower( ) | 如果字符串中至少包含一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,返回True;否则返回False | |
isupper( ) | 如果字符串中至少包含一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,返回True;否则返回False | |
isspace( ) | 如果字符串只包含空白,返回True;否则返回False | |
istitle( ) | 判断字符串是否为首字母大写 |
isalnum( ) & isalpha( )
isdigit( ) & isnumeric( ) & isdecimal( )
islower( ) & isupper( )
isspace( )