118 lines
3.4 KiB
Markdown
118 lines
3.4 KiB
Markdown
|
|
# 如何在 Python 中从字符串中获取子字符串——切片字符串
|
|||
|
|
|
|||
|
|
> 原文:<https://www.pythoncentral.io/how-to-get-a-substring-from-a-string-in-python-slicing-strings/>
|
|||
|
|
|
|||
|
|
那么如何在 Python 中获得子字符串呢?Python 有一个非常方便的特性,叫做“切片”,可以用来从字符串中获取子字符串。
|
|||
|
|
|
|||
|
|
但是首先,我们必须回顾一些事情来理解它是如何工作的。
|
|||
|
|
|
|||
|
|
## **切片 Python 对象**
|
|||
|
|
|
|||
|
|
在 Python 中,字符串是字符的数组,只是它们的行为与数组稍有不同。但是,在大多数情况下,您可以将它们视为数组。
|
|||
|
|
|
|||
|
|
利用这些信息,我们可以在字符串上使用 Python 的数组功能,称为“切片”!切片是一种通用的功能,可以应用于 Python 中的任何数组类型的对象。
|
|||
|
|
|
|||
|
|
这是一个具体的例子,用一个简单的数组开始。
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
|
|||
|
|
>>> a = [1,2,3,4,5]
|
|||
|
|
|
|||
|
|
>>> # This is slicing!
|
|||
|
|
|
|||
|
|
>>> a[:3]
|
|||
|
|
|
|||
|
|
[1, 2, 3]
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
正如你所看到的,这给了我们一个直到第三个元素的数组子集。切片接受两个“参数”,指定您希望在数组中的起始和结束位置。
|
|||
|
|
|
|||
|
|
语法:`array[start:end]`
|
|||
|
|
|
|||
|
|
因此,在上面的例子中,如果我们只需要元素 2 和 3,我们将执行以下操作:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
|
|||
|
|
>>> a[1:3]
|
|||
|
|
|
|||
|
|
[2, 3]
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
好吧,好吧。这与子弦有什么关系?问得好!
|
|||
|
|
|
|||
|
|
### **获取子字符串:切片 Python 字符串!**
|
|||
|
|
|
|||
|
|
上面,我提到我们可以像对待数组一样对待字符串。这意味着我们可以将相同的逻辑应用到我们的字符串中!
|
|||
|
|
|
|||
|
|
这里有一个例子:
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
|
|||
|
|
>>> s = 'Hello, everybody!'
|
|||
|
|
|
|||
|
|
>>> s[0]
|
|||
|
|
|
|||
|
|
'H'
|
|||
|
|
|
|||
|
|
>>> s[:3]
|
|||
|
|
|
|||
|
|
'Hel'
|
|||
|
|
|
|||
|
|
>>> s[2:5]
|
|||
|
|
|
|||
|
|
'llo'
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
哇!我们访问这个字符就像它是数组中的一个元素一样!厉害!
|
|||
|
|
|
|||
|
|
所以我们在这里看到的是一个“子串”。要从一个字符串中得到一个子字符串,只需输入字符串的起始位置和结束位置。
|
|||
|
|
|
|||
|
|
当然,我们也可以省略开始位置或结束位置,这将告诉 Python 我们希望分别从开始处开始我们的子字符串,或者在结尾结束它。
|
|||
|
|
|
|||
|
|
这是另一个使用我们上面的字符串的例子。
|
|||
|
|
|
|||
|
|
```py
|
|||
|
|
|
|||
|
|
>>> # Start from the beginning and go to character 5
|
|||
|
|
|
|||
|
|
>>> s[:5]
|
|||
|
|
|
|||
|
|
'Hello'
|
|||
|
|
|
|||
|
|
>>> # Start from character 5 and go to the end
|
|||
|
|
|
|||
|
|
>>> s[5:]
|
|||
|
|
|
|||
|
|
', everybody!'
|
|||
|
|
|
|||
|
|
>>> s[:]
|
|||
|
|
|
|||
|
|
'Hello, everybody!'
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
好吧,这很好,但是我在最后一行做了什么?我没有指定开始*或结束*,那么它怎么还能工作呢?
|
|||
|
|
|
|||
|
|
我们所做的是告诉 Python 从开始元素一直到结束元素。完全有效。它还创建字符串或数组的新副本。如果你需要原件的副本来修改,你可以用这个!
|
|||
|
|
|
|||
|
|
### **Python 中的反向子串切片**
|
|||
|
|
|
|||
|
|
另一个例子,使用扩展切片,可以逆序得到子串。这只是一个“好玩”的例子,但是如果你需要在 Python 中反转一个字符串,或者得到一个字符串的反转子字符串,这肯定会有帮助。
|
|||
|
|
|
|||
|
|
开始:
|
|||
|
|
【python】
|
|||
|
|
>>>s[::-1]
|
|||
|
|
'!ydobyreve,olleH '
|
|||
|
|
>>>s【4::-1】
|
|||
|
|
【olleH '
|
|||
|
|
|
|||
|
|
厉害!
|
|||
|
|
|
|||
|
|
解释扩展切片超出了本文的范围,所以我不会说太多。唯一不同的是结尾多了一个冒号和后面的数字。额外的冒号告诉 Python 这是一个扩展片,而“-1”是遍历字符串时使用的索引。如果我们在“-1”的位置放一个“1”,我们会得到和以前一样的结果。
|
|||
|
|
|
|||
|
|
你有它!Python 中获取子串真的很容易,希望我用 Python-fu 多教育了你一些。
|
|||
|
|
|
|||
|
|
再见了!
|