介绍
Python字符串数据类型是由一个或多个单个字符组成的序列,可以由字母,数字,空格字符或符号组成。因为字符串是一个序列,所以它可以通过索引和切片以与其他基于序列的数据类型相同的方式访问。 本教程将指导您通过索引访问字符串,通过字符序列对它们进行切片,并浏览一些计数和字符定位方法。
如何字符串索引
像列表
数据类型具有对应索引号的项目,每串的字符也对应于索引号,开始索引号0。 对于字符串
Sammy Shark!
指数详细情况如下:
S |
a |
m |
m |
y |
|
S |
h |
a |
r |
k |
! |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
感叹号(
!
),也有与它相关的索引号。 任何其他符号或标点符号,如
*#$&.;?
也是一个字符,将与自己的索引号相关联。我们也注意到之间的空白字符
Sammy
和
Shark
也对应有自己的索引号。在这种情况下,与空格相关联的索引号为5。 Python字符串中的每个字符都有相应的索引号,这使我们能够以与其他顺序数据类型相同的方式访问和操作字符串。
通过正索引号访问字符
通过引用索引号,我们可以隔离字符串中的一个字符。我们通过将索引号放在方括号中来做到这一点。让我们声明一个字符串,打印它,并在方括号中调用索引号:
ss = "Sammy Shark!"
print(ss[4])
Outputy
当我们引用字符串的特定索引号时,Python返回在该位置的字符。由于信
y
是在字符串的索引号4
ss = "Sammy Shark!"
当我们打印
ss[4]
我们收到
y
作为输出。 索引号允许我们访问字符串中的特定字符。
通过负索引号访问字符
如果我们有一个很长的字符串,我们要找准接近尾声的项目,我们也可以倒着从字符串的结尾算,起始于索引号
-1
。 对于相同的字符串
Sammy Shark!
的负折射率详细情况如下:
S |
a |
m |
m |
y |
|
S |
h |
a |
r |
k |
! |
-12 |
-11 |
-10 |
-9 |
-8 |
-7 |
-6 |
-5 |
-4 |
-3 |
-2 |
-1 |
通过使用负索引编号,我们可以打印出的字符
r
参照其位置-3指数,就像这样:
print(ss[-3])
Outputr
使用负索引号可以有利于将单个字符朝向长字符串的末尾隔离。
截取字符串
我们还可以从字符串中调用一定范围的字符。假设我们想只打印字
Shark
。 我们可以通过创建一个
切片 ,它是一个原始字符串内的一个字符的顺序进行。 随着切片,我们可以通过创建一系列由冒号隔开的索引号的调用多个字符值
[x:y]
print(ss[6:11])
OutputShark
当构造一个切片,如在
[6:11]
第一索引号码是片的开始(含),并且所述第二索引号码是片的端部(不包括),这就是为什么在本例中上述的范围内具有是将在字符串结束后发生的索引号。 当切片字符串,我们正在创建一个
字符串 ,它实际上是另一个字符串中存在的字符串。 当我们调用
ss[6:11]
,我们呼吁的子
Shark
在字符串中存在
Sammy Shark!
。 如果我们想包含字符串的任一端,我们可以省略的一个号码
string[n:n]
语法。 例如,如果我们想打印字符串的第一个字
ss
- “sammy” -我们可以通过打字这样做:
print(ss[:5])
OutputSammy
我们通过在切片语法中省略冒号之前的索引编号来实现此操作,并且仅包括冒号之后的索引号,其指的是子字符串的结尾。 要打印从字符串中间开始并打印到最后的子字符串,我们可以通过在冒号之前仅包含索引编号来实现,如下所示:
print(ss[7:])
Outputhark!
通过仅包括冒号之前的索引号并将第二个索引号留在语法之外,子字符串将从调用的索引号的字符转到字符串的结尾。 您也可以使用负索引号来分割字符串。当我们经过之前,一个字符串的负索引号从-1开始,并从那里倒计数,直到我们到达字符串的开头。当使用负索引号时,我们将首先从较低的数字开始,因为它在字符串中较早出现。 让我们用两个负索引编号切串
ss
:
print(ss[-4:-1])
Outputark
从字符串“Sammy Shark!”打印子串“ark”,因为字符“a”出现在-4索引号位置,并且字符“k”出现在-1索引号位置之前。
在分割字符串时指定跨度
字符串切片可以接受除了两个索引号之外的第三个参数。第三个参数指定的
跨度,它指的是多少个字符的第一个字符从字符串检索后向前移动。到目前为止,我们省略了跨度参数,并且Python默认为1的跨度,以便检索两个索引号之间的每个字符。 让我们再看看上面打印出子串“Shark”的例子:
print(ss[6:11])
OutputShark
我们可以通过包括一个跨度为1的第三个参数来获得相同的结果:
print(ss[6:11:1])
OutputShark
因此,1的跨度将取得切片的两个索引号之间的每个字符。如果我们省略跨度参数,Python将默认为1。 如果我们增加跨度,我们将看到字符被跳过:
print(ss[0:12:2])
OutputSmySak
指定的2跨度作为Python语法的最后一个参数
ss[0:12:2]
跳过所有其他字符。让我们看看以红色打印的字符:
Sa
mm
y
Sh
ar
k! 请注意,索引号5处的空格字符也会跳过,指定的跨度为2。 如果我们对跨度参数使用更大的数字,我们将有一个明显更小的子串:
print(ss[0:12:4])
OutputSya
指定的4跨度作为Python语法的最后一个参数
ss[0:12:4]
只打印每四个字符。再次,让我们看看以红色打印的字符:
Samm
y Sh
ark! 在这个例子中,空格字符也被跳过。 由于我们打印整个字符串,我们可以省略两个索引号,并保持两个冒号在语法内以实现相同的结果:
print(ss[::4])
OutputSya
省略两个索引号和保留冒号将使整个字符串保持在范围内,而为跨度添加最后一个参数将指定要跳过的字符数。 此外,您可以为跨度指定一个负数值,如果我们将跨度设置为-1,我们可以使用相反的顺序打印原始字符串:
print(ss[::-1])
Output!krahS ymmaS
没有指定参数的两个冒号将包括原始字符串中的所有字符,1的跨度将包括不跳过的每个字符,否定该跨度将颠倒字符的顺序。 让我们再做一次,但是跨度-2:
print(ss[::-2])
Output!rh ma
在此实例中,
ss[::-2]
我们正在处理的原始字符串的全部,因为没有索引号被包括在参数和扭转通过负跨度字符串。另外,通过具有-2的跨度,我们跳过反向字符串的每个其他字母:
!k
ra
hS
[whitespace]y
mm
aS 在此示例中打印了空格字符。 通过指定Python片段语法的第三个参数,可以指示您从原始字符串中提取的子字符串的跨度。
len() 方法
虽然我们正在考虑与字符串中的字符对应的相关索引数字,但是值得通过一些计算字符串或返回索引值的方法。这可以用于限制我们希望在用户输入表单中接受的字符数,或比较字符串。与其他顺序数据类型一样,字符串可以通过几种方法计数。 我们首先看一下
len()
方法,该方法可以得到一个序列,无论是有序或无序,包括字符串,列表,元组和字典的任何数据类型的长度。 让我们打印字符串的长度
ss
:
print(len(ss))
Output12
字符串“Sammy Shark!”的长度为12个字符,包括空格字符和感叹号符号。 而不是使用一个变量,我们还可以传递一个字符串对进入
len()
方法:
print(len("Let's print the length of this string."))
Output38
该
len()
方法计算字符的字符串内的总数。 如果我们要计算的次数或者一个特定的字符或字符序列在字符串中显示出来,我们可以用这样做
str.count()
方法。 让我们从我们的字符串工作
ss = "Sammy Shark!"
和计数的次数字符“a”出现在编号:
print(ss.count("a"))
Output2
我们可以搜索另一个字符:
print(ss.count("s"))
Output0
虽然字符串中包含字母“S”,但重要的是要记住每个字符区分大小写。如果我们想搜索的字符串中的所有字母不分的情况下,我们可以使用
str.lower()
方法将字符串先转换为小写。 你可以阅读更多关于这种方法“
在Python 3简介字符串的方法 。” 让我们尝试
str.count()
与字符序列:
likes = "Sammy likes to swim in the ocean, likes to spin up servers, and likes to smile."
print(likes.count("likes"))
Output3
在字符串
likes
,那就是等同于“喜欢”的字符序列发生在原始字符串的3倍。 我们还可以找到字符或字符序列在字符串中出现在什么位置。我们可以用做此
str.find()
方法,这将返回基于索引号码的字符的位置。 我们可以检查,看看那里的第一个“M”的字符串时
ss
:
print(ss.find("m"))
Ouput2
第一个字符“M”发生在2字符串中的索引位置“sammy鲨鱼!”我们可以检查字符串的索引号位置
ss
以上 。 让我们来看看,看看那里的第一个“喜欢”的发生字符序列的字符串
likes
:
print(likes.find("likes"))
Ouput6
字符序列“喜欢”的第一个实例开始于索引号位置6,这是在字符
l
序列的
likes
被定位。 如果我们想看看“喜欢”的第二个序列在哪里开始呢?我们可以通过传递第二个参数来做到这一点
str.find()
将在一个特定的索引号开始的方法。所以,不是从字符串的开头开始,而是从索引号9开始:
print(likes.find("likes", 9))
Output34
在从索引号9开始的第二个例子中,字符序列“喜欢”的第一次出现从索引号34开始。 此外,我们可以指定范围的结束作为第三个参数。像切片,我们可以通过使用负的索引号向后计数:
print(likes.find("likes", 40, -6))
Output64
最后一个示例在索引号40和-6之间搜索序列“喜欢”的位置。由于输入的最后一个参数是负数,它将从原始字符串的结尾开始计数。 的字符串方法
len()
str.count()
和
str.find()
可用于确定长度,字符或字符序列,并串中的字符或字符序列的索引的位置的计数。
结论
能够调用字符串的特定索引号或字符串的特定片段使我们在使用此数据类型时有更大的灵活性。因为字符串(如列表和元组)是基于序列的数据类型,所以它可以通过索引和切片访问。 你可以阅读更多关于
格式化字符串和
字符串方法继续学习有关字符串。