Python 字符串

limalove / 2023-08-25 / 原文

字符串、整数、元组不可变。

 

 

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( )