Python字符串方法详解

字符串

  • 是由0个或者多个字符组成的有序字符序列

由一对单引号、一对双引号、一对三单引号或三双引号表示,其中,三单引号和三双引号可表示多行字符串

在字符串之前,我们首先来了解一下ASCII和Unicode编码:

比较字符ASCII码值的大小:

空格<数字<大写字母<小写字母

Unicode编码

  • 是统一字符编码,即是几乎覆盖所有字符的编码方式
  • 从0到1114111(0x10FFFF)空间,每个编码都对应一个字符
  • Python字符串中每个字符都是Unicode编码字符
函数即其使用 描述
chr(x) 返回 Unicode编码x对应的字符
ord(x) 返回单字符x对应的Unicode编码

现在,开始正式进入Python字符串

1、Python字符串运算符

操作符及其使用 描述
x + y 连接字符串x和y
x * n 重复n次输出字符串x
[] 通过方括号 [] 索引获取字符串中字符
[m : n] 从字符串编号 m 截取到 n-1 部分
[m : n : k] 从字符串编号 m 跨 k 步截取到 n-1 部分
in 成员运算符 ,如果字符串中包含给定的字符返回 True
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True
r/R 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
% 格式字符串
>>>print(r'\n') 
\n
>>> print(R'\n') 
\n

2、Python的特殊字符—— 转义符 ( \ )

在需要在字符中使用特殊字符时,python用反斜杠( \ )转义字符

➢ \ (在行尾时) 续行符
➢\ \ 反斜杠符号
➢ \ ’ 单引号
➢ \ " 双引号
➢ \a 响铃
➢ \b 退格(Backspace)
➢ \e 转义
➢ \000 空
➢ \n 换行,光标移动到下行首
➢ \r 回车,光标移动到本行首
➢ \v 纵向制表符
➢ \t 横向制表符
➢ \f 换页
➢ \oyy 八进制数,yy代表的字符,例如:\o12代表换行
➢ \xyy 十六进制数,yy代表的字符,例如:\x0a代表换行

3、 Python字符串格式化

字符串格式化用于解决字符串和变量同时输出时的格式安排

python格式化符号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g 同%f和%e
%G 同%f 和 %E
%p 用十六进制数格式化变量的地址

由于格式化符号使用起来比较麻烦,所以新增了一种格式化字符串的函数 str.format(),format()方法可以非常方便地连接不同类型的变量或内容,增强了字符串格式化的功能

format()方法的基本使用:  <模板字符串>.format(<逗号分隔的参数>)

<模板字符串>由一系列的槽(大括号{})组成,用来控制修改字符串中嵌入值出现的位置,其思想是将format()方法的<逗号分隔的参数>中的参数按照序号关系替换到<模板字符串>的槽中。如果大括号中指定了使用参数的序号,按照序号对应参数替换;如果大括号中没有序号,则参数按照顺序替换到 {}。

若要输出大括号,采用 {{ 表示 { ,}} 表示 }

>>>"圆周率{{{1}{2}}}是{0}”.format("无理数",3.1415926,"...")
圆周率{3.1415926...}是无理数
format()方法的格式控制: {<参数序号>: <格式控制标记>} 

format()方法中<模板字符串>的槽除了包括参数序号,还可以包括格式
控制信息。<格式控制标记>用来控制参数显示时的格式,

其中,<类型>表示输出整数和浮点数类型的格式规则。
➢ b: 输出整数的二进制方式;
➢ c: 输出整数对应的Unicode字符;
➢ d: 输出整数的十进制方式;
➢ o: 输出整数的八进制方式;
➢ x: 输出整数的小写十六进制方式;
➢ X: 输出整数的大写十六进制方式;
➢ e: 输出浮点数对应的小写字母e的指数形式;
➢ E: 输出浮点数对应的大写字母E的指数形式;
➢ f: 输出浮点数的标准浮点形式;
➢ %: 输出浮点数的百分形式。

>>>a = “I love Python!”
>>>b = “*”
>>>c = “<”
>>>print(“{0:{1}^25}”.format(a,b))
*****I love Python!*****
>>>print(“{0:{1}>{2}}”.format(a,b,25))
**********I love Python!
>>>print(“{0:{1}{3}{2}}”.format(a,b,25,c))
I love Python!**********

4、字符串的内置函数

在这里插入图片描述

4.1字符串的类型判断

str. isdigit()判断字符串是否全为数字(0-9)
str. isdecimal()判断字符串是否只包含进制数字字符
str, isnumeric()判断字符串是否只包含数字字符.
对于非Unicode字符串,上述三个方法是等价的。
str. isalpha()判断字符串是否全为字母
str. isalnum()判断字符串是否全为字母或数字
str. islower()判断字符串是否全部为小写
str. isupper()判断字符串是否全为大写
str.istitle()判断是否为标题,即各单词首字母大写

 >>>'word1 Word2'.istitle()
False

str. isspace()判断字符串是否是空白(空格、制表符、换行符等)字符,没有任何字符是不算是空白。
str. isidentifier()判断是否满足标识符定义规则
str. isprintable()判断是否是可打印字符(例如制表符、换行符就不是可打印字符,但空格是)

4.2大小写转换
函数 描述
str. lower() 全部转换为小写 ,只对ASCII编码,也就是‘A-Z’有效
str. upper() 全部转换为大写
str. capitalize() 转换为首字母大写,其他字母小写
str.title() 转换为各单词首字母大写
str. swapcase () 大小写互换(大写->小写,小写->大写)
str. casefold() 将字符串中所有大写字符转换为小写。与 lower() 相似,但它对非汉语或英文的其他语言也有效
>>> 'A'.casefold()  == 'a'.casefold()
True
4.3字符串的填充与对齐

str.center (width[, fillchar]) 字符串居中,左右两边使用fillchar进行填充,使得整个字符串的长度为width。
str. ljust (width[, fillchar]) 左对齐
str. rjust (width[, fillchar])右对齐
ljust()使用fillchar填充在字符串S的右边,使得整体长度为width, rjust()则是填充在左边
str.zfill(width)前方补0
用0填充在字符串S的左边使其长度为width。如果S前有正负号±,则0填充在这两个符号的后面,且符号也算入长度。

注意:以上函数如果width小于字符串的长度,则无法填充直接返回字符串本身(不会创建新字符串对象);fillchar默认为空格。

str. expandtabs ([tabsize])将字符串中的制表符扩展为若干个空格, tabsize默认为8

4.4字符串的修剪

str. strip([chars)——移除左右两边的字符chars。
str. Istrip ([chars]) ——移除左边的字符chars。
str. rstrip ([chars])——移除右边的字符chars。

如果不指定chars或者指定为None,则默认移除空白(空格、制表符、换行符)。唯一需要注意的是, chars可以是多个字符序列。在移除时,只要是这个序列中的字符,都会被移除。

4.5字符串的测试与查找

str. startswith (prefix[, start[, end]])
str. endswith(suffix[, start[, end]])
➢endswith()检查字符串str是否以suffix结尾,返回布尔值的True和False, suffix可以是一个元组(tuple),可以指定起始 start和结尾end的搜索边界。
➢startswith()用来判断字符串str是否是以prefix开头。

注意:suffix是元组时,只要元组中任意一个元素满足endswith的条件,就返回True。

str. count (sub[, start[, end]])
➢返回字符串str中子串sub出现的次数,可以指定从哪里开始计算(start)以及计算到哪里结束(end),索引从0开始计算不包括end边界
str. find (sub[, start[, end]])
str.rfind (sub[, start[, end]])
str. index (sub[, start [, end]])
str.rindex (sub[, start[, end]])
➢find()搜索字符串S中是否包含子串sub,如果包含,则返回sub的索引位置,否则返回"-1"。可以指定起始start和结束 end的搜索位置
➢index()和find()一样,唯一不同点在于当找不到子串时,index()将抛出ValueError错误。
➢rfind()则是返回搜索到的最右边子串的位置,如果只搜索到一个或没有搜索到子串,则和find()是等价的。
同理rindex().

4.6字符串的替换

str. replace (old, new[, count])
·将字符串中的子串old替换为new字符串,如果给定count,则表示只替换前count个old子串。如果S中搜索不到子串 old,则无法替换,直接返回字符串S(不创建新字符串对象)。
str. expandtabs (N)
将字符串str中的\t替换为一定数量的空格。默认N=8,注意, expandtabs(8)不是将t直接替换为8个空格。例如xyztab’.expandtabs()会将 替换为5个空格,因为"xyz"占用了3个字符位。所以,在替换"\t"为空格时,会减掉"\t"前面的字符数量。如果"\t"的前面正好没有字符,则直接将"\t"替换为N个空格。另外,它不会替换换行符(\n或\r)。
str.translate (table)
static str. maketrans (x, y[, z]])
str.maketrans()生成一个字符一一映射的table,然后使用translate(table)对字符串str中的每个字符进行映射。
translate()实现的功能和Linux中的tr命令是类似的
注意, maketrans(x[, y[, z]])中的x和y都是字符串,且长度必须相等。
如果maketrans(x[, y[, z]])给定了第三个参数z,则这个参数字符串中的每个字符都会被映射为None.

3.7字符串的拆分与组合

str. split (sep=None, maxsplit=-1)
str. rsplit (sep=None, maxsplit=-1)
str. splitlines ([keępends=True])
都是用来分割字符串,并生成一个列表。
➢split()根据sep对str进行分割, maxsplit用于指定分割次数,如果不指定maxsplit或者给定值为"-1",则会从左向右搜索并且每遇到sep一次就分割直到搜索完字符串,如果不指定sep或者指定为None,则改变分割算法:以空格为分隔符,且将连续的空白压缩为一个空格.
➢rsplit()和split()是一样的,只不过是从右边向左边搜索
➢splitlines()专门用来分割换行符。虽然它有点像split(’\n’)或split(’\r\n’),但它们有些区别.
➢splitines()中可以指定各种换行符,常见的是\n,\r,\r\n.如果指定keepends为True,则保留所有的换行符。
str. partition (sep)
str. rpartition (sep)
搜索字符串str中的子串sep,并从sep处对str进行分割,最后返回一个包含3元素的元组: sep左边的部分是元组的第一个元素, sep自身是元组的第二个元素, sep右边是元组的第三个元素
partition(sep)从左边第一个sep进行分割, rpartition(sep)从右边第一个sep进行分割。

>>> print("sunny something some".partition("me"))
('sunny so', 'me', 'thing some')
>>> print("sunny something some".rpartition("me"))
('sunny something so', 'me', '')

如果搜索不到sep,则返回的3元素元组中,有两个元素为空。

 >>> print("sunny".partition("me"))
    ('sunny', '', '')

partition()是后两个元素为空, rpartition()是前两个元素为空。

str. join(iterable)
将可迭代对象(iterable)中的元素使用str连接起来。注意, iterable中必须全部是字符串类型,否则报错。
可迭代对象(iterable)可以暂时理解为:字符串string、列表list、元组tuple、字典dict,集合set.

>>> "sunny".join(('1','2','es'))
'1sunny2sunnyes'

猜你喜欢

转载自blog.csdn.net/best_of_times/article/details/88675675