首页 编程设计 报错String index out of range是什么意思

报错String index out of range是什么意思

报错String index out of range是什么意思

你是在编程的时候碰到这个错误的吧,这个错误是说数组或者字符串的索引(即下标)超出了范围,比如在C语言中你设a[10],但是调用的使用调用了a[i],i比10大,就会报错超出了范围。

字符串是一个由字符数据组成的序列。字符串处理是编程必备的技能,很少有应用程序不需要操作字符串的。

Python 提供了丰富的运算符、函数和类方法来操作字符串。

报错String index out of range是什么意思

通过本文,你将了解如何访问字符串以及提取字符串的子串,并熟悉用于操作和修改字符串数据的方法。

我们也会向你介绍 Python 中另外两种表示裸字节数据的对象:bytes 和 bytearray。

【字符串操作】

下边,我们将着重介绍用于字符串操作的运算符、类方法和函数。

1,字符串运算符

在《Python 运算符和表达式》一文中,我们已经在算术运算中使用过 + 和 * 运算符。这两个运算符不仅适用于数字操作数,它们也可用于字符串。

+ 运算符用于连接字符串,它返回一个由所有操作数连接在一起的字符串。

>>> s = 'foo'
>>> t = 'bar'
>>> u = 'baz'
>>>
>>> s + t
'foobar'
>>> s + t + u
'foobarbaz'
>>>
>>> print('Go team' + '!!!')
Go team!!!

* 运算符用于创建一个字符串的多份拷贝,并将这些拷贝连接起来。

若 s 是一个字符串,n 是一个整数,下边两个表达式均会返回连接起来的字符串 s 的 n 份拷贝。

s * n
n * s
例如:

>>> s = 'foo.'
>>> s * 4
'foo.foo.foo.foo.'
>>> 4 * s
'foo.foo.foo.foo.'
这里,n 必须为一个整数。你可能会觉得 n 还得必须为正整数,事实是,它可以是 0 或者 负数,这时候计算结果为空字符串。

>>> 'foo' * -8
''

Python 提供了一个可用于字符串的成员关系运算符:in。

若 in 运算符的左操作数包含于右操作数中,in 返回 True,否则返回 False。

>>> s = 'foo'
>>> s in "That's food for thought"
True
>>> s in "That's good for now"
False

Python 还提供了 not in 运算符,含义正好和 in 相反。

>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False

2,内置字符串函数

Python 提供了很多内置函数,可用于字符串操作。比如:

函数

描述

chr()

将整数转化为字符

ord()

将字符转化为整数

len()

返回字符串的长度

str()

返回一个对象的字符串表示

我们逐一了解一下这几个函数。

ord(c):返回字符的整数值

从最基本层面来讲,计算机是以数字的形式存储所有信息的。为了表示字符数据,我们可以用一个模式来翻译字符和对应数字之间的映射关系。

通常使用的最简单的模式就是 ASCII。它覆盖了我们最习惯使用的常见的拉丁字符。对于这些字符,ord(c) 返回字符 c 的 ASCII 值。

>>> ord('a')
97
>>> ord('#')
35
从本教程开始到现在,ASCII 很好地满足了我们的需求。但世界上还存在很多其他语言,在数字媒体领域也包含无数的符号。因此,需要用计算机编码表示的完整的字符集规模远超普通拉丁字符、数字和常见符号。

Unicode 编码标准在这方面雄心勃勃,它试图提供一个覆盖所有字符、所有语言、所有平台的数字编码集。

Python 3 对 Unicode 提供了广泛的支持,允许你在字符串中使用 Unicode 字符。

只要你使用范围限于普通字符,ASCII 和 Unicode 并无实操上的区别。而对于 Unicode 字符,ord(c) 函数也会返回其数字值。

>>> ord('€')
8364
>>> ord('∑')
8721

chr(n):返回整数的字符值

chr() 和 ord() 用途恰好相反。对于一个给定的数字,chr(n) 返回一个字符串,其值为和 n 对应的字符。

>>> chr(97)
'a'
>>> chr(35)
'#'
chr() 也可处理 Unicode 字符。

>>> chr(8364)
'€'
>>> chr(8721)
'∑'

len(s):返回字符串的长度

你可以使用 len() 来检查字符串的长度,len(s) 返回字符串 s 中 字符的个数。

>>> s = 'I am a string.'
>>> len(s)
14

str(obj):返回一个对象的字符串表示

Python 中的每个对象都可使用字符串来表示,str(obj) 返回对象 obj 的字符串表示。

>>> str(39.2)
'39.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('foo')
'foo'

3,字符串索引

在编程语言里,有序数据集中的单个元素通常可以直接通过数字索引或键值来访问。这个过程就是指索引(indexing)。

Python 中的字符串是字符数据的有序序列,因此可以用这种方式建立索引。字符串中的单个字符可通过字符串名称加方括号([])的方式来访问,方括号中是一个数字,即字符在字符串中的位置。

Python 中字符串索引以 0 开始。字符串中第一个字符的索引为 0,下一个索引为 1,以此类推。最后一个字符的索引为字符串长度减 1.

比如:字符串 'foobar' 的索引简图可表示为:

每个字符可通过如下方式来访问:

>>> s = 'foobar'
>>> s[0]
'f'
>>> s[1]
'o'
>>> s[3]
'b'
>>> len(s)
6
>>> s[len(s) - 1]
'r'

索引范围超出字符串尾部,将会导致错误:

>>> s[6]
Traceback (most recent call last):
File "", line 1, in
IndexError: string index out of range
这种情况称为“访问越界”。

字符串索引值也可以为负数,这种情况下索引就是自字符串尾部倒着进行:-1 指向最后一个字符,-2 指向倒数第二个字符,以此类推。

热门文章

Copyright © 2024 智能网 - 系统编程和数码游戏介绍_知识_教程服务平台!All Right Reserved - 备案号 : 蜀ICP备12013660号

免责声明:智能网所有文字、图片等资料仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,如有问题,请联系我们删除。