geekdoc-python-zh/docs/py4b/string-indexing-in-python.md

137 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Python 中的字符串索引
> 原文:<https://www.pythonforbeginners.com/strings/string-indexing-in-python>
在 Python 中,字符串用于处理文本数据。在处理字符串时,我们经常需要访问字符串的某一部分。在本文中,我们将看到如何使用 Python 中的索引来提取字符串的各个部分。
## 什么是字符串索引?
如果我们有一个有序序列或容器对象,如字符串、列表或元组,我们可以使用它们在序列中的相对位置来访问对象的元素。有序序列中元素的相对位置称为索引。通过索引,我们可以使用索引访问有序序列中的任何元素。
在 python 中,字符串索引是从零开始的。这意味着我们从 0 开始计数,字符串的第一个字符被赋予索引 0第二个字符被赋予索引 1第三个字符被赋予索引 2依此类推。
我们可以通过下面的例子来理解这一点。
假设我们有一个字符串“PythonForBeginners”
这里字母“P”的索引是 0。字母“y”的索引是 1。字母“t”的索引是 2字母“h”的索引是 3依此类推。最后一个字母“s”的索引是 17。
在 python 中,我们可以使用正数和负数进行字符串索引。让我们逐一讨论。
## 使用正数的字符串索引
正如我们在上面看到的,字符串使用正数从 0 到字符串长度-1 进行索引。我们可以使用如下的正索引来访问 0 到(字符串长度)-1 之间任何位置的字符。
```py
myString = "PythonForbeginners"
index = 0
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
index = 1
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
index = 2
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
index = 3
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
index = 17
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
```
输出:
```py
Character at index 0 in the string 'PythonForbeginners' is P.
Character at index 1 in the string 'PythonForbeginners' is y.
Character at index 2 in the string 'PythonForbeginners' is t.
Character at index 3 in the string 'PythonForbeginners' is h.
Character at index 17 in the string 'PythonForbeginners' is s.
```
请记住,大于或等于字符串长度的索引将导致如下 IndexError 异常。
```py
myString = "PythonForbeginners"
index = 20
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
```
输出:
```py
Traceback (most recent call last):
File "/home/aditya1117/PycharmProjects/pythonProject/string12.py", line 3, in <module>
character = myString[index]
IndexError: string index out of range
```
您可以通过在访问字符串中的任何字符之前检查 index 的值来避免 IndexError 异常。或者,您可以使用 python try except 块来处理出现的异常。
在这里,我会建议你使用 try except 块。如果我们使用小于字符串长度的索引进行访问,那么每次访问一个字符时检查索引可能是多余的,而且代价很高。当使用 try except 块时,程序不会在我们每次访问字符串中的一个字符时检查 index 的值。如果发生 IndexError它将由 except 块中的代码处理。
## 使用负数进行索引
我们也可以使用负索引来访问字符串中的字符。在 python 中,字符串的最后一个字符被赋予索引-1。倒数第二个字符的索引为-2。类似地字符串的第一个字符被赋予一个索引-(字符串的长度)。
我们可以通过下面的例子来理解这一点。
假设我们有一个字符串“PythonForBeginners”
这里字母“s”的索引是-1。字母“r”的索引是-2。字母“n”的索引是-3字母“n”的索引是-4依此类推。第一个字母“P”的索引是-18。
您可以使用下面的程序来验证这一点。
```py
myString = "PythonForbeginners"
index = -1
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
index = -2
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
index = -3
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
index = -4
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
index = -18
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
```
输出:
```py
Character at index -1 in the string 'PythonForbeginners' is s.
Character at index -2 in the string 'PythonForbeginners' is r.
Character at index -3 in the string 'PythonForbeginners' is e.
Character at index -4 in the string 'PythonForbeginners' is n.
Character at index -18 in the string 'PythonForbeginners' is P.
```
使用负数作为索引时,请确保传递的索引不小于-(字符串长度)。否则,您的程序将会遇到如下的 IndexError。
```py
myString = "PythonForbeginners"
index = -20
character = myString[index]
print("Character at index {} in the string '{}' is {}.".format(index, myString, character))
```
输出:
```py
Traceback (most recent call last):
File "/home/aditya1117/PycharmProjects/pythonProject/string12.py", line 3, in <module>
character = myString[index]
IndexError: string index out of range
```
## 结论
在本文中,我们研究了 python 中的字符串索引。我们已经看到了如何使用负数和正数来访问字符串中的字符。要学习更多关于 python 中字符串的知识,你可以阅读这篇关于[字符串连接](https://www.pythonforbeginners.com/concatenation/string-concatenation-and-formatting-in-python)的文章。