如何找到一个字符串是否包含在另一个字符串
a='1234;5'
print a.index('s')
的错误是:如何找到一个字符串是否包含在另一个字符串
> "D:\Python25\pythonw.exe" "D:\zjm_code\kml\a.py"
Traceback (most recent call last):
File "D:\zjm_code\kml\a.py", line 4, in <module>
print a.index('s')
ValueError: substring not found
感谢
使用find()
尝试,而不是 - 这将告诉你它是字符串中:
a = '1234;5'
index = a.find('s')
if index == -1:
print "Not found."
else:
print "Found at index", index
如果你只是想知道该字符串是否就在那里,你可以使用in
:
>>> print 's' in a
False
>>> print 's' not in a
True
print ('s' in a) # False
print ('1234' in a) # True
使用find
如果您需要的指数为好,但不希望引发异常。
print a.find('s') # -1
print a.find('1234') # 0
可以使用in
运营商,如果你只是想检查一个子是否在一个字符串。
if "s" in mystring:
print "do something"
否则,您可以使用find()
和检查-1(未找到)或使用index()
str.find()
和str.index()
几乎是一样的。最大的区别在于,如果找不到字符串,str.index()
会抛出错误,就像您得到的错误一样,而str.find()
会像其他人发布一样返回-1。
有两种叫做str.rfind()
和str.rindex()
的姊妹方法,它们从字符串的末尾开始搜索,并朝着开头工作。
此外,正如其他人已经表明,在in
运营商(以及not in
)是完全有效的为好。
最后,如果你想在字符串中寻找模式,你可能会考虑使用正则表达式,尽管我认为太多的人在他们过度使用时使用它们。在其他(着名)词中,“now you have two problems”。
这就像我现在所有的信息。但是,如果你正在学习Python和/或学习编程,一个非常有用的练习,我给我的学生是自己尝试和Python代码构建*find()
和*index()
,甚至in
和not in
(尽管功能)。你会得到很好的练习遍历字符串,和就现有字符串方法的工作原理而言,你将会有更好的理解。
好运!
正则表达式过度?为什么?对大多数字符串匹配算法进行编程可能没有更高效和更清晰的方法。 – 2011-02-28 15:44:00
对于可以使用find()和index()等工具完成的简单搜索,正则表达式不是一个好选择,因为它们在未经仔细检查的情况下往往难以阅读。能够浏览正则表达式并捕捉它所尝试做的所有细节的情况很少见。对于复杂的模式,它们可以非常有效,但可维护性可能成为问题。 – 2013-09-05 16:04:59
这是检查子串是否存在于字符串中的正确方法。
高清海(STR,STR1):
if(str1[0:] in str):
return "yes"
else:
return "no"
print(sea("sahil","ah"))
这是另外一个问题重复:http://stackoverflow.com/questions/3437059/does-python-have-a-string-contains-方法 – 2013-07-05 19:08:56
在另一个字符串中的字符串?你说的。这是python – joaquin 2013-09-05 15:48:18
@安德森:同意,它应该被重复关闭。 – lpapp 2013-09-05 18:47:36