python字符串方法详解

一、什么是字符串

  • 字符串是由0或多个字符组成的有序字符序列
  • 字符串有一对单引号或一对双引号表示
  • 有一对三引号或三双引号表示,可表示多行字符

二、字符编码

  1. ASCII
    1. 比较字符ASCII码值的大小:
      空格<数字<大写字母<小写字母
  2. Unicode
    chr(u):Unicode转单字符
    order(x):单字符转Unicode
  3. UTF-8

三、字符串操作符

  • x + y:连接两个字符串x和y
  • n * x 或 x* n:复制n次字符串x
  • x in s :如果x是s的子串,返回True, 否则返回False
  • x not in s:如果x不是s的子串,返回True, 否则返回False

四、字符串的格式化

4.1 format()方法的基本使用

语法:< 模板字符串>.format(<逗号分隔的参数>)

  • 注:
    1. <模板字符串>由一系列的 槽 组成,用来控制修改字符串中嵌入值出现的位置,其基本思想是将format()方法的<逗号分隔的参数>中的参数按照序号关系替换到<模板字符串>的槽中。槽用大括号{} 表示,如果大括号中没有序号,则按照出现顺序替换
    2. 如果大括号中指定了使用参数的序号<按照序号对应参数替换,调用format()方法后会返回一个新的字符串,参数从0开始编号。
      在这里插入图片描述 3. format()方法可以非常方便地连接不同类型的变量或内容,如果需要输出大括号,采用{{表示{,}}表示}
      在这里插入图片描述

4.2 format()方法的格式控制

  • format()方法中<模板字符串>的 槽 除了包括参数序号,还可以包括格式控制信息。
    语法:{< 参数序号>: < 格式控制标记>}
    • <格式控制标记>用来控制参数显示时的格式
      在这里插入图片描述

4.2.1 宽度:

 >>> s = 'python'
 >>> "{0:30}".format(s)	#宽度设置为30 默认左对齐 用空白填充
    	'python                        '
    	>>> s = 'python'
    	>>> "{0:->30}".format(s)		#宽度设置为30 右对齐 用横线填充
    	'------------------------python'
    	>>> "{0:-^30}".format(s)		#宽度设置为30 居中对齐 用横线填充
    	'------------python------------'

4.2.2 精度:

由小数点(.)开头。对于 浮点数,精度表
示输出的有效位数。对于 字符串,精度表示输出的最大长度

```
>>> "{0:.2f}".format(12345.6789)
'12345.68'
>>> "{0:h^20.3f}".format(12345.6789)
'hhhhh12345.679hhhhhh'
>>> "{0:.4}".format("python")
'pyth'
```

4.2.3 类型:

表示输出整数和浮点数类型的格式规则
语法:{.5a} a代表各种字符

字母功能
%b输出整数的二进制方式
%c输出整数对应的Unicode字符
%d输出整数的十进制方式
%o输出整数的八进制方式
%x输出整数的小写十六进制方式
%X输出整数的大写十六进制方式
%e输出浮点数对应的小写字母e的指数形式
%E输出浮点数对应的大写字母E的指数形式
%f输出浮点数的标准浮点形式
%%输出浮点数的百分形式
%p用十六进制数格式化变量的地址
>>> a = “I love Python.”
>>> b = “*”
>>> c = “^”
>>> print(“{0:{1}^25}”.format(a,b))
>>> print(“{0:{1}^{2}}”.format(a,b,25))
>>> print(“{0:{1}{3}{2}}”.format(a,b,25,c))
*****I love Python.******
*****I love Python.******
*****I love Python.******
```

五、字符串的特殊字符

5.1. 转义符

  • 表达特定字符的本意
  • “abc(”)" 结果为为 abc"
  • 形成一些不可打印的组合
字母功能
\b回退
\n换行,光标移动到下行首
\r回车,光标移动到本行首
\ (在行尾时)续行符
\反斜杠符号
单引号
‘’双引号
\a响铃
\e转义
\000
\f换页
\t横向制表符
\v纵向制表符
\oyy 八进制数,yy代表的字符eg:\o12代表换行
\xyy 十六进制数,yy代表的字符eg:\x0a代表换行

六、字符串方法

在这里插入图片描述

6.1 字符串的大小写转换

函数功能
str.capitalize将字符串第一个字母变大写
str.casefold将字符串中所有大写字母变小写字母
str.lower将字符串中所有大写字母全部转换为小写
str.upper将字符串中所有小写字母全部转换为大写
str. swapcase将字符串中大小写互换
str.title将字符串首字母大写

举例:
str.capitalize:将字符串第一个字母变大写

>>> a = 'abcd'
>>> str.capitalize(a)
'Abcd'

6.2 字符串的类型判断

函数功能
str.isalnum判断字符串是否全为字母或数字
str.isalpha判断字符串是否全为字母
str.isdecimal判断字符串是否只包含进制数字字符
str.isdigit判断字符串是否全为数字(0-9)
str.isidentifier判断是否满足标识符定义规则
str.islower判断字符串是否全部为小写
str.isnumeric判断字符串是否只包含数字字符
str.isprintable判断是否是可打印字符(例如制表符、换行符就不是可打印字符,但空格是)
str.isspace判断字符串是否是空白(空格、制表符、换行符等)字符,没有任何字符是不算是空白
str.istitle判断是否为标题,即各单词首字母大写
str.isupper判断字符串是否全为大写

举例:
str.isalnum :判断字符串是否全为字母数字

>>> a = 'acv34'
>>> str.isalnum(a)
True

6.3 字符串的测试与查找

函数功能
str.startswith用来判断字符串str是否是以prefix开头
str.endwith检查字符串str是否以suffix结尾,返回布尔值的True和False, suffix可以是一个元组(tuple),可以指定起始 start和结尾end的搜索边界
str.count返回字符串str中子串sub出现的次数,可以指定从哪里开始计算(start)以及计算到哪里结束(end),索引从0开始计算不包括end边界
str.find搜索字符串str中是否包含子串sub,如果包含,则返回sub的索引位置,否则返回"-1"
str.rfind返回搜索到的最右边子串的位置,如果只搜索到一个或没有搜索到子串,则和find()是等价的
str.index(x)返回找到第一个x的下标
str.rindex返回找到最后一个x的下标
str. startswith (prefix[, start[, end]])
str. endswith(suffix[, start[, end]])

6.4 字符串的填充与对齐

函数功能
str.center字符串居中,左右两边使用fillchar进行填充,使得整个字符串的长度为width
str.ljust左对齐
str. rjust右对齐
str.zfill用0填充在字符串S的左边使其长度为width。如果S前有正负号±,则0填充在这两个符号的后面,且符号也算入长度。
str. expandtabs将字符串中的制表符扩展为若干个空格, tabsize默认为8
str.center (width[, fillchar])
str. ljust (width[, fillchar])
str. rjust (width[, fillchar])
str.zfill(width)
str. expandtabs ([tabsize])

6.5字符串的修剪

函数功能
str. strip移除左右两边的字符chars
str. Istrip移除左边的字符chars
str. rstrip移除右边的字符chars
str. strip([chars)
str. Istrip ([chars])
str. rstrip ([chars])

6.6 字符串的替换

函数功能
str. replace将字符串中的子串old替换为new字符串,如果给定count,则表示只替换前count个old子串。如果S中搜索不到子串 old,则无法替换,直接返回字符串S(不创建新字符串对象)。
str. expandtabs将字符串str中的\t替换为一定数量的空格。默认N=8,注意, expandtabs(8)不是将t直接替换为8个空格
str.translate实现的功能和Linux中的tr命令是类似的
static str. maketrans生成一个字符一一映射的table,然后使用translate(table)对字符串str中的每个字符进行映射

注:maketrans(x[, y[, z]])中的x和y都是字符串,且长度必须相等。
如果maketrans(x[, y[, z]])给定了第三个参数z,则这个参数字符串中的每个字符都会被映射为None.

str. replace (old, new[, count])
str. expandtabs (N)
str.translate (table)
static str. maketrans (x, y[, z]])

6.7 字符串的拆分与组合

函数功能
str. split对str进行分割,根据sep对str进行分割,maxsplit用于指定分割次数如果不指定maxsplit或者给定值为"-1",则会从左向右搜索并且每遇到sep一次就分割直到搜索完字符串,如果不指定sep或者指定为None,则改变分割算法:以空格为分隔符,且将连续的空白压缩为一个空格. split分割后成为了列表
str. rsplit与split()是一样的,只不过是从右边向左边搜索
str. splitlines专门用来分割换行符,可以指定各种换行符
str. partition从左边第一个sep进行分割
str. rpartition从右边第一个sep进行分割
str. join(iterable)将可迭代对象(iterable)中的元素使用str连接起来
str. split (sep=None, maxsplit=-1)
str. rsplit (sep=None, maxsplit=-1)
str. splitlines ([keępends=True])
str. partition (sep)
str. rpartition (sep)

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

>>> print("sunny something some".partition("me"))
('sunny so', 'me', 'thing some')
>>> print("sunny something some".rpartition("me"))
('sunny something so', 'me', '')
 >>> print("sunny".partition("me"))
('sunny', '', '')
>>> "sunny".join(('1','2','es'))
'1sunny2sunnyes'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值