Python 标准库

str

2022-03-29

str[[Python]] 的内置类型,用于表示和操作字符串。字符串是由 Unicode 码位构成的不可变序列,可以通过 .encode() 方法编码为 bytes。

写法

  1. 单引号: '允许包含有 "双" 引号'
  2. 双引号: "允许嵌入 '单' 引号"
  3. 三重引号: '''三重单引号''', """三重双引号""" 可跨行

方法

大小写操作

  • .lower(): 转换为小写;
  • .upper(): 转换为大写;
  • .casefold(): 比 .lower() 更加彻底的版本,比较少用;
  • .capitalize(): 首字母转换为大写;
  • .title(): 每个单词的首字母转换为大写;
  • .swapcase(): 反转大小写;

.title()

可以把字符串中每个单词的首字母转换为大写:

"hello python!".title()
# 返回: Hello Python!

但是这个方法有个弊端,当存在 ’ 时,也会将其转换为大写:

"they're bill's friends from the UK".title()
# 返回: "They'Re Bill'S Friends From The Uk"

不过可以用 [[Python/librarys/string]] 替代。

拆分与合并

  • .split(): 把字符串拆分成列表;
  • .rsplit(): 从右边开始把字符串拆分成列表;
  • .splitlines():
  • .partition():
  • .rpartition():
  • .join():

.split()

把字符串拆分成列表:

语法: str.split(sep=None, maxsplit=-1)

  • sep: 以 sep 作为分隔字符串;
  • maxsplit: 指定拆分次数(默认不限制);
"Hello, World".split(",") # 返回 ['Hello', ' World']

.partition()

语法: str.partition(sep)

  • sep: 以 sep 作为分隔字符串;

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

"key:value".partition(":") # 返回 ('key', ':', 'value')
"key".partition(":") # 返回 ('key', '', '')

搜索和替换

  • .find():
  • .rfind():
  • .index():
  • .rindex()
  • .startswith():
  • .endswith():
  • .cound():
  • .replace():

.startswith()

开头匹配,如果匹配返回 True。

语法:startswith(substr, beg, end)

str = 'Hello, world'
str.startswith('He')
str.startswith('o', 4)
# 支持匹配多个,必须以元组形式传入
str.startswith(('H', 'Z'))

.endswith()

结尾匹配,如果匹配返回 True。

语法:endswith(substr, beg, end)

.replace()

语法:.replace(old, new[, max])

对指定字符进行替换,并返回替换后的数据。

填充和去除

  • .ljust()
  • .rjust():
  • .center():
  • .expandtabs():
  • .strip():
  • .lstrip():
  • .rstrip():

字符串分类

  • .isalpha():
  • .isdecimal():
  • .isdigit(): 判断字符串是否只包含数字,如果是返回 True;
  • .isnumeric():
  • .isalnum():
  • .isalnum():
  • .isidentifier():
  • .islower()
  • .isupper()
  • .istitle()
  • .isspace():
  • .isprintable()

转写和编码格式

  • .encode(): 返回编码为 bytes 的字符串;

.translate()

按规则一次性替换多个字符。

str.translate(table)
  • table: 需要先使用 [[str]] 创建一个翻译表;
s = "中英文字符替换,.!"
table = s.maketrans(",.", ",。")
s.translate(table)

maketrans 中第一个参数是需要要替换的符号,第二个参数才是对应的符号;如果传入第三个参数,可以实现删除,而不是替换:

s = "符号删除,.!"
table = s.maketrans("", "", ",.")
s.translate(table) # 返回:符号删除!

.encode()

返回编码为 bytes 的字符串,默认编码为 utf-8,完整编码可参考 [[codecs]]

str.encode(encoding='utf-8', errors='strict')
  • encoding: 编码格式,默认是 utf-8
  • errors: 如何处理编码错误;
    • -strict: 引发 UnicodeError
"hello, world.".encode()
# 返回: b'hello, world.'

参考