如何获取Python中字符的位置?
我该如何在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]
这个范围内。如果找不到,就返回-1
。start 和 end 的默认值和负值的解释和切片是一样的。
还有:
string.index(s, sub[, start[, end]])
这个方法和find()
类似,但如果找不到子字符串,就会抛出一个ValueError
错误。