【Python从0到1】字符串 str 类最全详解!小白必备

str 字符串类

在 Python 中处理文本数据是使用 str 对象,也称为 字符串。 字符串是由 Unicode 码位构成的不可变序列。

生成

# 直接用 单引号'' 括起来
'helloworld'

# 直接用 双引号"r" 括起来
"helloworld"

# 三单引号'''''',内部可换行
'''hello,
world'''

# 三双引号"""""",内部可换行
"""hello,
world"""

# 构造方法
str(obj)

转义字符

常用的转义字符有:

字符描述
\a响铃,执行后电脑会有响声
\b退格(Backspace)
\n换行
\v纵向制表符
\t横向制表符
\r回车
\r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。
\f换页
\yyy八进制数,y 代表 0~7 的字符,例如:\012 代表换行
\xyy十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行
\\反斜杠
\’单引号
\"双引号
\000
\other其它的字符以普通格式输出

若在字符串前加 r,则将字符按原样输出。也可以使用函数 repr(s),其作用相当于在字符串前加 r。

>>> print('I love \nPython')
I love
Python
>>> print(r'I love \nPython')
I love \nPython
>>> print(repr('I love \nPython'))
I love \nPython'

字符串运算符

+:连接两个字符串。

>>> s = 'hello ' + 'world'
>>> s
'hello world'

*:重复输出字符串。

>>> s = 'hello ' * 3
>>> s
'hello hello hello '

in:成员运算符,如果字符串中包含给定的字符返回 True。

>>> s = 'python'
>>> 'py' in s
True
>>> 'Py' in s
False

前缀

在字符串字面值(即用引号括起来的部分)前加上前缀会有特殊功能。

前缀描述
r输出原始字符,即不转义。
repr(s) 函数效果相同。
f格式化,相当于 s.format(*args, **kwargs)。
见本文 方法 ->格式化
b转换为字节。

示例:

>>> print(r'py\nthon3')
py\nthon3
>>> print(f'python{1+2}')
python3
>>> print(b'python3')
b'python3'
>>> print(repr('py\nthon3'))
'py\nthon3'
>>> print('python{}'.format(1+2))
python3

访问

获取整个字符串。

s = 'helloworld'
print(s)

切片

 ┌───┬───┬───┬───┬───┬───┐
 │ P │ y │ t │ h │ o │ n │
 └───┴───┴───┴───┴───┴───┘
 0   1   2   3   4   5   6
-6  -5  -4  -3  -2  -1

第一行数字是字符串中索引 0…6 的位置,第二行数字是对应的负数索引位置。

索引 i 指向的是 i 右边的字符。

ij 的切片由 ij 之间所有对应的字符组成。在切片中,i 默认为 0,j 默认为字符串末尾。

示例:

>>> s = 'Python'
>>> s[0], s[-1]
('P', 'n')
>>> s[1:-2]
'yth'
>>> s[:]
'Python'

方法

搜索子字符串

s.count(sub[, start[, end]])

返回从 startend 之间与 sub 不重叠的匹配项数目。

s.find(sub[, start[, end]])

返回子字符串 subs[start:end] 切片内被找到的最小索引。如未找到则返回 -1。

s.index(sub[, start[, end]])

s.find 类似,但如果没有找到,会抛出 ValueError 错误。

s.rfind(sub[, start[, end]])

s.rindex(sub[, start[, end]])

s.rfind 类似,但如果没有找到,会抛出 ValueError 错误。

构建相关字符串

s.replace(old, new[, count])

返回字符串的副本,其中出现的所有子字符串 old 都将被替换为 new。 如果给出了可选参数 count,则只替换前 count 次出现。

s.capitalize()

返回原字符串的副本,其首个字符大写,其余为小写。

s.upper()

返回原字符串的副本,其中所有区分大小写的字符均转换为大写。

s.lower()

返回原字符串的副本,其所有区分大小写的字符均转换为小写。

s.center(width)

返回长度为 width 的字符串,原字符串在其正中。 使用指定的 fillchar 填充两边的空位(默认使用 ASCII 空格符)。 如果 width 小于等于 len(s) 则返回原字符串的副本。

s.ljust(width)

s.center 类似,但是是使原字符串在其中靠左对齐。

s.rjust(width)

s.center 类似,但是是使原字符串在其中靠右对齐。

s.zfill(width)

返回原字符串的副本,在左边填充 ASCII '0' 数码使其长度变为 width。 正负值前缀 ('+'/'-') 的处理方式是在正负符号 之后 填充而非在之前。 如果 width 小于等于 len(s) 则返回原字符串的副本。

s.strip([chars])

返回原字符串的副本,移除其中的前导和末尾字符。 chars 参数为指定要移除字符的字符串。 如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个前缀或后缀;而是会移除参数值的所有组合

s.lstrip([chars])

s.strip 类似,不过只移除其中的前导字符。

s.rstrip([chars])

s.strip 类似,不过只移除其中的末尾字符。

测试布尔条件

s.startswith(prefix[, start[, end]])

如果字符串以指定的 prefix 开始则返回 True,否则返回 False。 prefix 也可以为由多个供查找的前缀构成的元组。

s.endswith(suffix[, start[, end]])

如果字符串以指定的 suffix 结束返回 True,否则返回 False。 suffix 也可以为由多个供查找的后缀构成的元组。

s.isspace()

如果字符串中只有空白字符且至少有一个字符则返回 True,否则返回 False 。

s.isalpha()

如果字符串中的所有字符都是字母,并且至少有一个字符,返回 True ,否则返回 False 。

s.isdigit()

如果字符串中的所有字符都是数字,并且至少有一个字符,返回 True ,否则返回 False 。

s.isalnum()

如果字符串中的所有字符都是字母或数字且至少有一个字符,则返回 True, 否则返回 False 。 如果 c.isalpha()c.isdecimal()c.isdigit() ,或 c.isnumeric() 之中有一个返回 True ,则字符c是字母或数字。

s.islower()

如果字符串中至少有一个区分大小写的字符且此类字符均为小写则返回 True,否则返回 False。

s.isupper()

如果字符串中至少有一个区分大小写的字符且此类字符均为大写则返回 True,否则返回False。

s.istitle()

如果字符串中至少有一个字符且为标题字符串则返回 True,例如大写字符之后只能带非大写字符而小写字符必须有大写字符打头。 否则返回 False。

s.isidentifier()

如果字符串是有效的标识符,返回 True,否则返回 False。

拆分和连接字符串

s.join(iterable)

返回一个由 iterable 中的字符串拼接而成的字符串。 如果 iterable 中存在任何非字符串值包括 bytes 对象则会引发 TypeError。 调用该方法的字符串将作为元素之间的分隔。

s.split(sep[, count])

返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。 如果给出了 maxsplit,则最多进行 maxsplit 次拆分(因此,列表最多会有 maxsplit + 1 个元素)。 如果 maxsplit 未指定或为 -1,则不限制拆分次数(进行所有可能的拆分)。

s.rsplit(sep[, count])

类似 s.split,不过从右边开始拆分。

s.splitlines()

返回由原字符串中各行组成的列表,在行边界的位置拆分。

s.partition(sep)

sep 首次出现的位置拆分字符串,返回一个 3 元组,其中包含分隔符之前的部分、分隔符本身,以及分隔符之后的部分。 如果分隔符未找到,则返回的 3 元组中包含字符本身以及两个空字符串。

s.rpartition(sep)

类似 s.partition,不过从右边开始拆分。

格式化

调用此方法的字符串可以包含字符串字面值或者以花括号 {} 括起来的替换域。 每个替换域可以包含一个位置参数的数字索引,或者一个关键字参数的名称。 返回的字符串副本中每个替换域都会被替换为对应参数的字符串值。

格式化方法结构:
s.format(arg0, arg1, ...)

**1、**按顺序

>>> '{} is a {}.'.format('Python', 'language')
'Python is a language.'

**2、**编号

>>> "{0}, {0}, {0}, I'm {1}.".format('hello', 'yeanky')
"hello, hello, hello, I'm yeanky."

**3、**关键字

>>> "I'm {name}. I'm {age} years old.".format(name='yeanky', age='14')
"I'm yeanky. I'm 14 years old."
格式控制信息

format()方法中<模板字符串>的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下:

{<参数序号或名称>: <格式控制标记>}

其中,<格式控制标记>用来控制参数显示时的格式,包括:**<填充><对齐><宽度>,<.精度><类型>**6 个字段,这些字段都是可选的,可以组合使用。

<填充>

指 <宽度> 内除了参数外的字符采用什么方式表示,默认采用空格,可以通过 <填充> 更换。

<对齐>

指参数在 <宽度> 内输出时的对齐方式,分别使用 <>^ 三个符号表示左对齐、右对齐和居中对齐。

<宽度>

指当前槽的设定输出字符宽度,如果该槽对应的 format() 参数长度比<宽度>设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。

<逗号>

用于显示数字的千位分隔符。

<.精度>

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

<类型>

表示输出整数和浮点数类型的格式规则。对于整数类型,输出格式包括6 种:

  • b:输出整数的二进制方式;
  • c:输出整数对应的 Unicode 字符;
  • d:输出整数的十进制方式;
  • o:输出整数的八进制方式;
  • x:输出整数的小写十六进制方式;
  • X:输出整数的大写十六进制方式;

对于浮点数类型,输出格式包括4 种:

  • e:输出浮点数对应的小写字母 e 的指数形式;

  • E:输出浮点数对应的大写字母 E 的指数形式;

  • f:输出浮点数的标准浮点形式;

  • %:输出浮点数的百分形式。

示例

>>> s = 123.456
>>> '{0:.2}, {0:*>10.1}, {0:,%}'.format(s)
'1.2e+02, *****1e+02, 12,345.600000%'

— End —

感谢阅读!
原创不易,期待你的点赞、收藏与关注

本文收录于专栏 Python 从0到1
关注作者,互助交流,学习更多 Python 知识!

https://blog.csdn.net/weixin_48448842


推荐阅读

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值