如何获取Python中字符的位置?

733 投票
11 回答
1552978 浏览
提问于 2025-04-15 19:28

我该如何在Python中获取字符串中某个字符的位置呢?

11 个回答

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

“啰嗦”的方法

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

来获取子字符串,

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

为了让内容更完整,如果你想在一个字符串中找到某个字符出现的所有位置,可以这样做:

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

这样会输出:[4, 9]

935

这里有两个字符串的方法可以用,分别是 find()index()。它们的区别在于,当你找的字符串没有找到时,会发生什么。find() 会返回 -1,而 index() 则会抛出一个 ValueError 错误。

使用 find()

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

使用 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

来自 Python 手册

string.find(s, sub[, start[, end]])
这个方法会返回字符串 s 中,子字符串 sub 最低的索引位置,也就是它第一次出现的位置。这个子字符串必须完全包含在 s[start:end] 这个范围内。如果找不到,就返回 -1startend 的默认值和负值的解释和切片是一样的。

还有:

string.index(s, sub[, start[, end]])
这个方法和 find() 类似,但如果找不到子字符串,就会抛出一个 ValueError 错误。

撰写回答