Python字符串index()

时间:2020-02-23 14:43:26  来源:igfitidea点击:

Python String index()函数返回找到指定子字符串的最低索引。
如果未找到子字符串,则会引发" ValueError"。

Python字符串index()语法

该函数语法为:

str.index(sub[, start[, end]])

起始参数的默认值为0,它是一个可选参数。

end参数的默认值是字符串的长度,它是一个可选参数。

当我们想知道子字符串的索引位置时,应该使用index()函数。
为了检查是否存在子字符串,我们可以使用in运算符。

Python字符串索引()与查找()

如果未找到子字符串,Python字符串index()函数将引发ValueError,而find()函数将返回-1。
这是这些功能之间的唯一区别。

Python String index()示例

让我们看一下index()函数的一些简单示例。

s = 'abcd1234dcba'

print(s.index('a'))
print(s.index('cd'))
print(s.index('1', 0, 5))

输出:

0
2
4

现在让我们看另一个示例,其中不存在子字符串,并且引发ValueError。
我将使用try-except块来捕获异常并打印其消息。

s = 'abcd1234dcba'

try:
  print(s.index('1', 0, 2))
except ValueError as ve:
  print(ve)

输出:substring not found

Python字符串rindex()

Python字符串rindex()方法类似于index(),不同之处在于搜索是从右到左执行的。

s = 'abcd1234dcba'

print(s.rindex('a'))
print(s.rindex('cd'))
print(s.rindex('1', 0, 5))

try:
  print(s.rindex('1', 0, 2))
except ValueError as ve:
  print(f'Error Message = {ve}')

输出:

11
2
4
Error Message = substring not found

使用index()查找子字符串的所有索引

Python字符串index()方法返回第一个匹配的索引。
我们可以定义一个自定义函数,以找到其中找到子字符串的所有索引。

def find_all_indexes(input_str, search_str):
  l1 = []
  length = len(input_str)
  position = 0
  while position < length:
      try:
          i = input_str.index(search_str, position)
          l1.append(i)
          position = i + 1
      except ValueError as ve1:
          # finally exception will be raised because all the indexes are found
          return l1

s = 'abaacdaa12aa2'
print(find_all_indexes(s, 'a'))
print(find_all_indexes(s, 'aa'))

输出:

[0, 2, 3, 6, 7, 10, 11]
[2, 6, 10]