本节课我们来讲解一下字符串对象常见内置函数和方法的使用,我们对这些函数或者方法进行了一些归类,方便大家更好的理解和使用。
一、内置函数
1、查找字符数(len() 函数)
在编程过程中,我们经常需要确定字符串的字符数量。要完成此任务,可以使用内置函数len() 。
使用字符串作为参数时,该函数返回输入字符串的长度或该字符串中的字符数。
>>> len("Python")
6
>>> len("")
0Code language: Python (python)
示例中,”Python”字符串有6个字母,所以字符串的长度是6,返回结果是6。如果我们使用的是空字符串,那么长度是0,所以返回结果是0.
字符串对象初了我们常见的字母数字或者汉字组成外,还可以由一些图形表情符号 组成,比如下面示例中的蛇形符号🐍,我们可以使用转义序列
来定义具有单个蛇形表情符号的字符串。那这个蛇形符号的长度是多少呢?一起来看一下吧!
>>> "\N{snake}"
'🐍'
>>> len("\N{snake}")
1
>>> len("🐍")
1Code language: Python (python)
图形表情符号字符串长度示例
2、其他对象转换为字符串
要将其他对象转换为字符串表示形式,您可以使用内置的 str() 和 repr()函数。
(1)str() 函数
str() 函数可以将对象转化为用户友好适于阅读的表示形式,该表示形式通常由一个字符串组成,该字符串包含对象文本。
>>> str(42)
'42'
>>> str(3.14)
'3.14'
>>> str([1, 2, 3])
'[1, 2, 3]'
>>> str({"one": 1, "two": 2, "three": 3})
"{'one': 1, 'two': 2, 'three': 3}"
>>> str({"A", "B", "C"})
"{'B', 'C', 'A'}"Code language: Python (python)
在这些示例中,输出显示了输入对象的用户友好表示形式。这些表示形式与对象的文本重合。
(2)repr()函数
而repr()函数也可以将对象转化为适于阅读的表示形式,这种表示形式对开发人员更为友好。
>>> repr(42)
'42'
>>> repr(3.14)
'3.14'
>>> repr([1, 2, 3])
'[1, 2, 3]'
>>> repr({"one": 1, "two": 2, "three": 3})
"{'one': 1, 'two': 2, 'three': 3}"
>>> repr({"A", "B", "C"})
"{'B', 'C', 'A'}"Code language: Python (python)
从示例可以看出,对于内置数据类型,str() 和 repr() 的输出是相同的。这两个函数都将对象的文本作为字符串返回。
它们之间的区别,可以从以下示例Person类中看出:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"{type(self).__name__}(name='{self.name}', age={self.age})"
def __str__(self):
return f"I'm {self.name}, and I'm {self.age} years old."Code language: Python (python)
示例中,repr()方法提供了特定对象的对开发人员友好的字符串表示形式,能够使用函数的输出重新创建对象。相比之下,str()方法调用获得的字符串表示形式旨在为最终用户提供更好的可读性和信息性。
从下面两个函数的类实例处理更可以看出它们的区别:
>>> per = Person("Lili", 35)
>>> repr(per)
"Person(name='Lili', age=35)"
>>> str(per)
"I'm Lili, and I'm 35 years old."Code language: Python (python)
在上述示例中,可以使用repr()的输出重新创建存储在per中的对象。但是str()并没有这样,只是为最终用户提供有用的信息。
可以使用内置函数format() 设置字符串的格式。它允许用户将数据格式化为所需的字符串表示形式。
>>> import math
>>> from datetime import datetime
>>> format(math.pi, ".4f") # Four decimal places
'3.1416'
>>> format(1000000, ",.2f") # Thousand separators
'1,000,000.00'
>>> format("Header", "=^30") # Centered and filled
'============Header============'
>>> format(datetime.now(), "%a %b %d, %Y") # Date
'Mon Jul 29, 2024'Code language: Python (python)
从示例中可以看出,函数format()有两个参数,第一个是要格式化的字符串,第二个是格式说明符,可以把字符串格式化为对应的格式,比如示例中第二个”,.2f”,可以使用逗号作为千位分隔符和两位小数来设置数字的格式。
4、获取字符码点(ord() 函数)
在计算机底层,计算机将所有信息存储为数字。为了表示字符数据,计算机使用一些转换方案,这些方案可以将每个字符映射到其关联的数字,即其码点(Code
Point)。
最常用的方案是 ASCII 和Unicode ,但是它们支持的字符种类有区别, ASCII
主要支持英文字符和一些特殊符号,对于中文等非拉丁文字的支持有限。而Unicode
是一种更为普遍接受的标准,支持每个平台或操作系统上几乎每种可能的自然语言包括中文在内的所有语言文字。
使用ord() 函数就可以获取这些字符的ASCII 值 。
>>> ord("a")
97
>>> ord("#")
35Code language: Python (python)
ord()函数还可以返回 Unicode 字符的数值。
>>> ord("€")
8364
>>> ord("∑")
8721Code language: Python (python)
在Unicode 表中,字符”€”关联的码位是8364,字符”∑”关联的码位是8721。
还有一个函数chr()功能恰好和ord()函数功能相关,函数chr()返回与给定代码点关联的字符值。
>>> chr(97)
'a'
>>> chr(35)
'#'
>>> chr(8364)
'€'
>>> chr(8721)
'∑'Code language: Python (python)
二、类方法探索
方法是在类内部定义的函数。与函数一样,可以调用方法来执行特定任务。与函数不同的是,可以在特定对象或类上调用方法,以便它在执行过程中了解其包含的对象。
在对象上调用方法的语法如下所示:
object.method([arg_0, arg_2, ..., arg_n])
class.method([arg_0, arg_2, ..., arg_n])
括号内可以指定方法所需的参数,参数可选。
Python 的类提供了一组丰富的方法,可以使用它们以多种不同的方式格式化字符串。
1、字符串大小写操作
接下来,我们将介绍一些方法可以对目标字符串执行大小写转换。注意,本节中的方法仅影响字母。非字母字符保持不变。
这个需要特别注意,由于字符串是不可变的 ,因此当字符串方法对现有字符串更改时,返回的是一个新的字符串对象。
(1).capitalize()(字符串第一个字符大写其余小写)
该方法返回目标字符串的副本,其第一个字符转换为大写,其他字符转换为小写。
>>> "foO BaR 123 BAZ quX".capitalize()
'Foo bar 123 baz qux'Code language: Python (python)
在此示例中,只有目标字符串中的第一个字母将转换为大写,其余字母将转换为小写。
(2).lower()(所有字母都大写)
该方法返回目标字符串的副本,所有字母字符都转换为小写。
>>> "FOO Bar 123 baz qUX".lower()
'foo bar 123 baz qux'Code language: Python (python)
(3).swapcase()(大小写互转)
该方法返回目标字符串的副本,其中大写字母字符转换为小写,反之亦然。
>>> "FOO Bar 123 baz qUX".swapcase()
'foo bAR 123 BAZ Qux'Code language: Python (python)
在此示例中,将小写字母转换为大写字母,将大写字母转换为小写字母。
(4).title()(每个单词首字母大写)
该方法返回目标字符串的副本,其中每个单词的第一个字母转换为大写,其余字母为小写。
>>> "the sun also rises".title()
'The Sun Also Rises'Code language: Python (python)
示例中,目标字符串中每个单词的第一个字母转换为大写。
(5).upper()(所有字母都大写)
该方法返回目标字符串的副本,所有字母字符都转换为大写。
>>> "foo Bar 123 baz quX".upper()
'FOO BAR 123 BAZ QUX'Code language: Python (python)
示例中,得到一个新字符串,所有字母都是大写的。
2、字符串查找操作
本节中的方法提供了在目标字符串中搜索指定子字符串的各种方法。
(1).count(sub[, start[, end]])(子字符串出现次数)
该方法返回子字符串在目标字符串中出现的次数。
>>> "foo goo moo".count("oo")
3Code language: Python (python)
上述示例中,没有添加开始和结束索引,如果添加上,示例如下:
>>> "foo goo moo".count("oo", 0, 8)
2Code language: Python (python)
在此示例中,搜索从索引0 开始,到 索引8结束。因此,不计算最后一次出现的”oo” 。
(2).find(sub[, start[, end]])(查找出现的第一位置索引)
该方法检查字符串是否包含特定的子字符串,并返回子字符串所在的第一个索引位置。
>>> "foo bar foo baz foo qux".find("foo")
0Code language: Python (python)
如果在目标字符串中找不到指定的子字符串,则返回 -1.
>>> "foo bar foo baz foo qux".find("gra")
-1Code language: Python (python)
上述示例中也没有指定搜索范围,我们可以指定开始和结束索引范围,将搜索限制为目标字符串的一部分。如下:
>>> "foo bar foo baz foo qux".find("foo", 4)
8
>>> "foo bar foo baz foo qux".find("foo", 4, 7)
-1Code language: Python (python)
(3).index(sub[, start[, end]])(查找出现的第一位置索引)
该方法类似于上面的.find()方法,只不过如果找不到目标字符串不是返回-1而是直接报错。
>>> "foo bar foo baz foo qux".index("foo")
0
>>> "foo bar foo baz foo qux".index("gra")
Traceback (most recent call last):
...
ValueError: substring not foundCode language: Python (python)
如果子字符串存在于目标字符串中,则返回子字符串的第一个位置开始的索引。如果在目标字符串中找不到子字符串,则会报出 ValueError异常。
(4).rfind(sub[, start[, end]])(查找出现的最后位置索引)
返回在目标字符串中找到的子字符串的最后一个所在位置索引。
>>> "foo bar foo baz foo qux".rfind("foo")
16Code language: Python (python)
如果未找到子字符串,则返回-1.
>>> "foo bar foo baz foo qux".rfind("gra")
-1Code language: Python (python)
同样可以设置索引范围,指定在特定范围内查找子字符串。
>>> "foo bar foo baz foo qux".rfind("foo", 0, 14)
8
>>> "foo bar foo baz foo qux".rfind("foo", 10, 14)
-1Code language: Python (python)
(5).rindex(sub[, start[, end]])(查找出现的最后位置索引)
与rfind()方法类型,不同之处是找不到目标字符串时候会报错。
>>> "foo bar foo baz foo qux".rindex("foo")
16
>>> "foo bar foo baz foo qux".rindex("gra")
Traceback (most recent call last):
...
ValueError: substring not foundCode language: Python (python)
(6).startswith(prefix[, start[, end]])(查找前缀)
如果字符串以指定的 prefix 开始则返回 True,否则返回 False。
>>> "foobar".startswith("foo")
True
>>> "foobar".startswith("bar")
FalseCode language: Python (python)
因为”foobar”是以”foo”开始的,所以第一个示例返回True,它不是以”bar”开始的,所以第二个示例返回False。
同样,它也可以通过索引指定范围,这样搜索范围就将限制在给定索引范围内。
>>> "foobar".startswith("bar", 3)
True
>>> "foobar".startswith("bar", 3, 5)
FalseCode language: Python (python)
当指定end索引值,范围是不包括这个end索引位置的,所以上面示例中第二个示例从索引3开始到索引5但是不包括索引5结束,这个范围内的字符只有ba,不是bar,所以返回False。
(7).endswith(suffix[, start[, end]])(查找结尾)
如果字符串以指定的 suffix 结尾则返回 True,否则返回 False。
>>> "foobar".endswith("bar")
True
>>> "foobar".endswith("foo")
False
>>> "foobar".endswith("oob", 0, 4)
True
>>> "foobar".endswith("oob", 2, 4)
FalseCode language: Python (python)
3、字符串分类操作
本节中的方法根据字符串的字符对字符串进行分类,比如字符串是否只有数字,只有字母,只是空格、都可打印等类型。这些方法都包含一个谓词is,所以它们返回True还是False取决于检查条件。
(1).isalnum()(判断非空且都是字母数字)
如果目标字符串不为空,并且其所有字符都是字母数字,则返回True,否则返回False。
>>> "abc123".isalnum()
True
>>> "abc$123".isalnum()
FalseCode language: Python (python)
在示例中,第一个示例字符串中仅包含字母和数字,所以返回True,第二个示例中因为包含了$不是字母或数字,所以返回False。
(2).isalpha()(判断非空且都是字母)
如果目标字符串不为空并且其所有字符都是字母则返回True,否则返回False。
>>> "ABCabc".isalpha()
True
>>> "abc123".isalpha()
False
>>> "ABC abc".isalpha()
FalseCode language: Python (python)
该方法可以检查给定字符串中的所有字符是否都是字母,但是需要注意,空格不是字母字符 。
(3).isdigit()(判断非空且都是数字)
该方法可以检查字符串是否仅由数字组成,如果目标字符串不为空,并且其所有字符都是数字,则该方法返回True,否则返回False。
>>> "123".isdigit()
True
>>> "123abc".isdigit()
FalseCode language: Python (python)
(4).isidentifier()(判断非空且是有效标识符)
判断目标字符串是否是有效 Python 标识符,即用来判断变量名是否合法,是则返回True,否则返回False。
>>> "foo32".isidentifier()
True
>>> "32foo".isidentifier()
False
>>> "132".isidentifier()
FalseCode language: Python (python)
注意,Python关键字也是有效标识符,比如and、def、class等关键字也会返回True。
>>> "and".isidentifier()
TrueCode language: Python (python)
(5).islower()(判断非空且字母都小写)
如果目标字符串不为空并且其所有字母字符都是小写的,则返回True,否则返回False。
>>> "abc".islower()
True
>>> "abc1$d".islower()
True
>>> "Abc1$D".islower()
FalseCode language: Python (python)
(6).isprintable()(判断非空且字母都可打印)
如果目标字符串为空或其所有字母字符都是可打印的,则返回True,否则返回False。
>>> "a\tb".isprintable()
False
>>> "a b".isprintable()
True
>>> "".isprintable()
True
>>> "a\nb".isprintable()
FalseCode language: PHP (php)
如果目标字符串包含至少一个不可打印的字符,结果都会返回False。
(7).isspace()(判断非空且都是空格)
如果目标字符串不为空且其所有字符都是空格,则返回True,否则返回False。
最常用的空格字符是空格” “、制表符”\t”和换行符””\n”.
>>> " \t \n ".isspace()
True
>>> " a ".isspace()
FalseCode language: Python (python)
还有一些其他 ASCII 字符符合空格字符的条件,如果考虑到 Unicode 字符,则除此之外还有相当多的字符:
>>> "\f\u2005\r".isspace()
TrueCode language: Python (python)
(8).istitle()(判断非空且单词首字母大写其余小写)
如果目标字符串不为空,每个单词的第一个字母字符为大写,每个单词中的第一个字母外的其他字母字符为小写,则返回True,否则返回False。
>>> "This Is A Title".istitle()
True
>>> "This is a title".istitle()
False
>>> "Give Me The #$#@ Ball!".istitle()
TrueCode language: PHP (php)
(9).isupper()(判断非空且字母都大写)
如果目标字符串不为空且其所有字母字符均为大写,则返回True,否则返回False。
>>> "ABC".isupper()
True
>>> "ABC1$D".isupper()
True
>>> "Abc1$D".isupper()
FalseCode language: Python (python)
4、设置字符串格式
本节中的方法可以以多种不同的方式修改或增强字符串的格式,比如居中、靠左靠右等。
(1).center(width[, fill])(居中对齐)
此方法用于在给定宽度width内将字符串居中对齐,并在两侧填充指定字符。默认填充ASCII 空格字符。
>>> "foo".center(10)
' foo 'Code language: JavaScript (javascript)
示例中,字符宽度设为10,所以在让foo居中的前提下,左右两侧填充了空格字符。
调用方法的时候还可以指定填充的字符fill,如下:
>>> "bar".center(10, "-")
'---bar----'
>>> "foo".center(2)
'foo'Code language: Python (python)
示例中,第一个示例用”-“字符填充,最终结果是’—bar—-‘,第二个示例给定的字符串长度小于原字符串长度,结果是返回原样。
(2).expandtabs(tabsize=8)(空格替换制表符)
该方法作用是用空格替换在目标字符串中找到的每个制表符\t。制表符\t的默认空格数是8个,如果当前位置到开始位置或上一个制表符位置的字符数不足 8
的倍数则以空格代替。
>>> "a\tb\tc".expandtabs()
'a b c'
>>> "aaa\tbbb\tc".expandtabs()
'aaa bbb c'
>>> "a\tb\tc".expandtabs(4)
'a b c'
>>> "aaa\tbbb\tc".expandtabs(tabsize=4)
'aaa bbb c'Code language: Python (python)
该方法还可以输入参数,用于指定备用制表符大小。
(3).ljust(width[, fill])(靠左对齐)
此方法用于在给定宽度width内将字符串靠左对齐,并在右侧填充指定字符。默认填充ASCII 空格字符。
>>> "foo".ljust(10)
'foo 'Code language: Python (python)
该方法也可以指定填充字符,如下所示:
>>> "foo".ljust(10, "-")
'foo-------'
>>> "foo".ljust(2)
'foo'Code language: Python (python)
示例中,第一个示例用”-“字符填充,最终结果是’foo——-‘,第二个示例给定的字符串长度小于原字符串长度,结果是返回原样。
(4).rjust(width[, fill])(靠右对齐)
此方法用于在给定宽度width内将字符串靠右对齐,并在左侧填充指定字符。默认填充ASCII 空格字符。
>>> "foo".rjust(10)
' foo'Code language: Python (python)
也可以指定填充的参数,如下:
>>> "foo".rjust(10, "-")
'-------foo'
>>> "foo".rjust(2)
'foo'Code language: Python (python)
(5).removeprefix(prefix)(删除前缀字符串)
返回从头删除指定字符串prefix的目标字符串。
>>> "https://kidscodes.cn".removeprefix("https://")
'kidscodes.cn'
>>> "https://kidscodes.cn".removeprefix("kidscodes")
'https://kidscodes.cn'Code language: Python (python)
指定的要删除的参数,如果字符串以这个参数开头,那么就会删除这个前缀,如果不是以这个参数开头的,则返回原字符串。
(6).removesuffix(suffix)(删除结尾字符串)
返回从末尾删除指定字符串suffix的目标字符串。
>>> "http://kidscodes.cn".removesuffix(".cn")
'http://kidscodes'
>>> "http://kidscodes.cn".removesuffix("kidscodes")
'http://kidscodes.cn'Code language: Python (python)
指定的要删除的参数,如果字符串以这个参数结尾,那么就会删除这个结尾,如果不是以这个参数结尾的,则返回原字符串。
(7).lstrip([chars])(删除左侧空格或字符)
返回从左端删除所有空格或指定字符集的字符串。
>>> " foo bar baz ".lstrip()
'foo bar baz '
>>> "\t\nfoo\t\nbar\t\nbaz".lstrip()
'foo\t\nbar\t\nbaz'Code language: Python (python)
不仅是空格字符,制表符、换行符都可以删除,只要它们在字符串左侧。
这个方法不仅可以删除空格,也可以指定要删除的字符串参数,用于删除特定字符集。
>>> "https://kidscodes.cn".lstrip("/:htps")
'kidscodes.cn'Code language: Python (python)
这个示例中,使用参数”/:htps”字符集就可以将URL的前缀删除掉了。需要注意,使用的时候这个参数字符集中不应该包含剩余字符串的开头字符,否则就会出现下面这种情况:
>>> "http://python.org".lstrip("/:htp")
'ython.org'Code language: Python (python)
(8).rstrip([chars])(删除右侧空格或字符)
返回从右端删除所有空格或指定字符集的字符串。
>>> " foo bar baz ".rstrip()
' foo bar baz'
>>> "foo\t\nbar\t\nbaz\t\n".rstrip()
'foo\t\nbar\t\nbaz'Code language: Python (python)
同样可以指定要删除的字符集参数,如下:
>>> "foo.$$$;".rstrip(";$.")
'foo'Code language: Python (python)
(9).strip([chars])(删除开头结尾空格或字符)
删除字符串开头和结尾的空格或指定字符。
>>> " foo bar baz ".strip()
'foo bar baz'Code language: Python (python)
可以指定要删除的字符集参数:
>>> "https://kidscodes.cn".strip("htps:/")
'kidscodes.cn'Code language: JavaScript (javascript)
(10).replace(old, new[, count])(字符串替换)
使用new子字符串替换old子字符串。
>>> "foo bar foo baz foo qux".replace("foo", "gra")
'gra bar gra baz gra qux'Code language: Python (python)
该方法还可以指定可选参数count,表示从目标字符串左端开始要替换的个数。
>>> "foo bar foo baz foo qux".replace("foo", "gra", 2)
'gra bar gra baz foo qux'Code language: Python (python)
示例中的参数2,指定要从字符串左侧开始替换2个”foo”,所以第三个没有被替换掉。
(11).zfill(width)(填充0补齐字符串)
返回指定宽度width的字符串,原字符串右对齐,前面填充0。
>>> "82".zfill(5)
'00082'
>>> "foo".zfill(6)
'000foo'Code language: Python (python)
如果目标字符串包含前导符号,则在前导符号后插入0。
>>> "+42".zfill(8)
'+0000042'
>>> "-42".zfill(8)
'-0000042'Code language: Python (python)
5、连接和拆分字符串
本节中将探讨的方法可以通过将对象连接在一起以构成字符串或将字符串分解为多个部分,从而在字符串和某些复合数据类型之间进行转换。
这些方法对可迭代对象进行操作或返回可迭代对象,这些可迭代对象是对象的集合。例如,许多方法会返回列表或元组。
(1).join(iterable)(字符串连接)
该方法用于将可迭代对象中的元素以指定的字符连接生成一个新的字符串。
>>> ", ".join(["foo", "bar", "baz", "qux"])
'foo, bar, baz, qux'Code language: Python (python)
示例中,返回的是一个新的字符串,字符串由逗号和空格分隔组成。
需要注意的是,输入的可迭代对象必须是包含字符串对象的,否则将报错:
>>> "---".join(["foo", 23, "bar"])
Traceback (most recent call last):
...
TypeError: sequence item 1: expected str instance, int foundCode language: Python (python)
上述示例中,因为可迭代对象中第二个对象不是字符串对象,而是整数,所以无法连接成新字符串而报错。
那如果我们想要不包含字符串对象的可迭代对象也进行转换该怎么办呢?可以使用str()对内部对象先进行转换为字符串,如下:
>>> numbers = [1, 2, 3]
>>> "->".join(str(number) for number in numbers)
'1->2->3'Code language: Python (python)
(2).partition(sep)(字符串拆分-以指定分隔符从左侧开始)
根据指定的分隔符,在分隔符第一次出现时将字符串进行拆分,如果字符串包含指定的分隔符sep,则返回值是一个包含三个对象的元组:
1.分隔符前面的子字符串
2.分隔符本身
3.分隔符后面的子字符串
>>> "foo.bar".partition(".")
('foo', '.', 'bar')
>>> "foo@@bar@@baz".partition("@@")
('foo', '@@', 'bar@@baz')
>>> "foo.bar@@".partition("@@")
('foo.bar', '@@', '')
>>> "foo.bar".partition("@@")
('foo.bar', '', '')Code language: Python (python)
请注意,如果字符串以分隔符结尾,比如上面第三个示例,则元组中的最后一项是空字符串。如果在目标字符串中找不到分隔符,如上面第四个示例,则返回的元组包含字符串,后跟两个空字符串。
(3).rpartition(sep)(字符串拆分-以指定分隔符从右侧开始)
工作方式类似于 .partition(sep),不同之处在于目标字符串在最后一次出现而不是第一次出现时被拆分。
下面两个示例可以看出它们的区别:
>>> "foo@@bar@@baz".partition("@@"")
('foo', '@@', 'bar@@baz')
>>> "foo@@bar@@baz".rpartition("@@")
('foo@@bar', '@@', 'baz')Code language: CSS (css)
所以,字符串分区时从目标字符串的右侧开始进行的。
(4).split(sep=None, maxsplit=-1)(字符串拆分-以空格或指定分隔符从左端开始拆分)
如果没有参数,.split()将目标字符串拆分为由任何空格序列分隔的子字符串,并以列表形式返回子字符串:
>>>"foo bar baz qux".split()
['foo', 'bar', 'baz', 'qux']
>>>"foo\n\tbar baz\r\fqux".split()
['foo', 'bar', 'baz', 'qux']Code language: Python (python)
如果指定参数,则将参数用作拆分的分隔符:
>>>"foo.bar.baz.qux".split(".")
['foo', 'bar', 'baz', 'qux']Code language: Python (python)
如果字符串中出现多个连续分隔符,则会进行连续拆分:
>>>"foo...bar".split(".")
['foo', '', '', 'bar']Code language: CSS (css)
但是,连续的空格字符将合并为一个分隔符,并且生成的列表永远不会包含空字符串:
>>>"foo\t\t\tbar".split()
['foo', 'bar']Code language: Python (python)
如果指定了可选参数maxsplit,则从目标字符串的左端 开始,最多执行maxsplit数量的拆分:
>>>"foo.bar.baz.qux".split(".", 1)
['foo', 'bar.baz.qux']Code language: Python (python)
上述示例中,指定 maxsplit=1 ,所以从目标字符串左侧开始,之执行一次拆分。
(5).rsplit(sep=None, maxsplit=-1)(字符串拆分-以空格或指定分隔符从右端开始拆分)
方法的行为类似于.split() ,不同之处在于如果指定了maxsplit,则从目标字符串的右端 而不是左端开始计算拆分:
>>>"foo.bar.baz.qux".split(".", 1)
['foo.bar.baz', 'qux']Code language: Python (python)
如果没有指定maxsplit,则此方法结果和.split()结果一样。
(6).splitlines([keepends])(字符串拆分为行)
该方法将目标字符串拆分为行,并在列表中返回它们。
>>>"foo\nbar\r\nbaz\fqux\u2028quux".splitlines()
['foo', 'bar', 'baz', 'qux', 'quux']Code language: Python (python)
如果目标字符串中存在连续的行边界字符,则会把它们分隔空行,这些空行将在结果列表中显示为空字符串:
>>> "foo\f\f\fbar".splitlines()
['foo', '', '', 'bar']
>>> "foo\nbar\nbaz\nqux".splitlines(True)
['foo\n', 'bar\n', 'baz\n', 'qux']Code language: Python (python)
上述示例中,第二个示例表示,如果将可选参数keepends设置为True ,则行边界将保留在结果字符串中。
示例中,\f、\n、\u2028这些转义序列都可以作为行边界,除此之外,下表中的转义序列都可以作为行边界:
转义序列 | 描述 |
---|
\n | 换行符 |
\r | 回车 |
\r\n | 回车 + 换行 |
\v或\x0b | 垂直制表符 |
\f或\x0c | 表单源 |
\x1c | 文件分隔符 |
\x1d | 组分隔符 |
\x1e | 记录分隔符 |
\x85 | Unicode字符NEXT LINE下一行 |
\u2028 | Unicode 行分隔符 |
\u2029 | Unicode 段落分隔符 |
行边界转义序列 |
|
好啦,本节课我们详细的讲解了Python字符串的内置函数和类方法的作用和使用,相信大家对这些内容已经有一定的了解,后续随着我们学习的深入,还会再次接触这些内容,大家多多练习使用就能熟练掌握!
声明:本站稿件凡恩品牌资讯以外部分类目资讯转载来自于互联网,如有疑义请联系我们删除。