3 回答

TA贡献1851条经验 获得超3个赞
这有两个String的方法,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的最低索引,以使sub完全包含在中s[start:end]。-1失败返回。开始和结束以及负值的解释的默认值与切片相同。
和:
string.index(s, sub[, start[, end]])
喜欢,find()但是ValueError在找不到子字符串时提高。

TA贡献1757条经验 获得超8个赞
仅出于完整性考虑,如果需要查找字符串中字符的所有位置,可以执行以下操作:
s = 'shak#spea#e'
c = '#'
print [pos for pos, char in enumerate(s) if char == c]
这将返回 [4, 9]

TA贡献1828条经验 获得超3个赞
>>> s="mystring"
>>> s.index("r")
4
>>> s.find("r")
4
“长ed”方式
>>> for i,c in enumerate(s):
... if "r"==c: print i
...
4
得到子串,
>>> s="mystring"
>>> s[4:10]
'ring'
添加回答
举报