How to get the position of a character in Python? How to get the position of a character in Python? python python

How to get the position of a character in Python?


There are two string methods for this, find() and index(). The difference between the two is what happens when the search string isn't found. find() returns -1 and index() raises ValueError.

Using find()

>>> myString = 'Position of a character'>>> myString.find('s')2>>> myString.find('x')-1

Using index()

>>> myString = 'Position of a character'>>> myString.index('s')2>>> myString.index('x')Traceback (most recent call last):  File "<stdin>", line 1, in <module>ValueError: substring not found

From the Python manual

string.find(s, sub[, start[, end]])
Return the lowest index in s where the substring sub is found such that sub is wholly contained in s[start:end]. Return -1 on failure. Defaults for start and end and interpretation of negative values is the same as for slices.

And:

string.index(s, sub[, start[, end]])
Like find() but raise ValueError when the substring is not found.


Just for a sake of completeness, if you need to find all positions of a character in a string, you can do the following:

s = 'shak#spea#e'c = '#'print([pos for pos, char in enumerate(s) if char == c])

which will print: [4, 9]


>>> s="mystring">>> s.index("r")4>>> s.find("r")4

"Long winded" way

>>> for i,c in enumerate(s):...   if "r"==c: print i...4

to get substring,

>>> s="mystring">>> s[4:10]'ring'