Python String index()

The index() method returns the index of a substring inside the string (if found). If the substring is not found, it raises an exception.

The syntax of index() method for string is:

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

index() Parameters

The index() method takes three parameters:

  • sub - substring to be searched in the string str.
  • start and end(optional) - substring is searched within str[start:end]

Return Value from index()

  • If substring exists inside the string, it returns the lowest index in the string where substring is found.
  • If substring doesn't exist inside the string, it raises a ValueError exception.

The index() method is similar to find() method for strings.

The only difference is that find() method returns -1 if the substring is not found, whereas index() throws an exception.


Example 1: index() With Substring argument Only

sentence = 'Python programming is fun.'

result = sentence.index('is fun')
print("Substring 'is fun':", result)

result = sentence.index('Java')
print("Substring 'Java':", result)

When you run the program, the output will be:

Substring 'is fun': 19

Traceback (most recent call last):
  File "...", line 6, in 
    result = sentence.index('Java')
ValueError: substring not found

Note: Index in Python starts from 0 and not 1.


Example 2: index() With start and end Arguments

sentence = 'Python programming is fun.'

# Substring is searched in 'gramming is fun.'
print(sentence.index('ing', 10))

# Substring is searched in 'gramming is '
print(sentence.index('g is', 10, -4))

# Substring is searched in 'programming'
print(sentence.index('fun', 7, 18))

When you run the program, the output will be:

15
17

Traceback (most recent call last):
  File "...", line 10, in 
    print(quote.index('fun', 7, 18))
ValueError: substring not found