Python 返回单词在字符串中的位置的函数
我正在编写一个包含两个参数的函数:搜索字符串和目标字符串。函数将在目标字符串中查找搜索字符串,并应返回一个字符串,表示在目标字符串中找到搜索字符串的位置 例如,如果目标字符串是target_string=Georgia Tech和search_string=Georgia,则它应该返回字符串开头。如果搜索字符串为gia,则应返回中间;如果搜索字符串为Tech,则应返回End 代码: 其中len_dif是搜索字符串和目标字符串的长度之差。这样做会打印出正确的答案,但会弄乱最后的elif。因此,如果我运行以下代码Python 返回单词在字符串中的位置的函数,python,string,Python,String,我正在编写一个包含两个参数的函数:搜索字符串和目标字符串。函数将在目标字符串中查找搜索字符串,并应返回一个字符串,表示在目标字符串中找到搜索字符串的位置 例如,如果目标字符串是target_string=Georgia Tech和search_string=Georgia,则它应该返回字符串开头。如果搜索字符串为gia,则应返回中间;如果搜索字符串为Tech,则应返回End 代码: 其中len_dif是搜索字符串和目标字符串的长度之差。这样做会打印出正确的答案,但会弄乱最后的elif。因此,如果
print(string_finder("Georgia Tech", "Georgia"))
print(string_finder("Georgia Tech", "gia"))
print(string_finder("Georgia Tech", "Tech"))
print(string_finder("Georgia Tech", "Nothing"))
与其打印开始、中间、结束和未找到,不如打印开始、中间、中间和未找到不要重新发明轮子。Python有一些有用的字符串方法可供使用:
if target_string.startswith(search_string):
return 'Beginning'
elif target_string.endswith(search_string):
return 'End'
elif target_string in search_string):
return 'Middle'
else return 'Not Found'
End的正确条件是查看s1.finds2+lens2==lens1
您可以尝试以下方法:
target_string.find(search_string, len_str, len_dif ):
s = "Georgia Tech"
target = "Georgia"
if target in s.split():
the_index = s.split().index(target)
if the_index == len(s.split())-1:
print "end"
elif the_index == 0:
print "Beginning"
else:
the_index = s.index(target)
if the_index > 0 and the_index < len(s) -1:
print "middle"
elif the_index == 0:
print "Beginning"
elif the_index == len(s)-2:
print "end"
您的代码确认搜索字符串位于目标字符串中。那很好。唯一的问题是在什么情况下返回一个结果字符串 我建议您计算一次字符串的位置,然后在代码的其余部分使用该数字:
pos = target_string.find(search_string)
if pos < len_search:
return "Beginning"
请注意,当搜索字符串正好位于末尾时,str.find的结果将是搜索字符串开始的位置,即len_target-len_search。如果你想在你的最终结果中有任何模糊,你必须允许一些额外的。我选择使用2*len_搜索,因为它在开始时与您的津贴相匹配。我发现以下代码相当清楚:
from __future__ import print_function
target_string = "Georgia Tech"
for search_string in ("Georgia", "gia", "Tech", "bla"):
print("Result of searching for %s in %s: " % (search_string, target_string),
end="")
if target_string.startswith(search_string):
print("Beginning")
elif target_string.endswith(search_string):
print("End")
elif target_string.find(search_string) != -1:
print("Middle")
else:
print("Absent")
其中:
Result of searching for Georgia in Georgia Tech: Beginning
Result of searching for gia in Georgia Tech: Middle
Result of searching for Tech in Georgia Tech: End
Result of searching for bla in Georgia Tech: Absent
如果目标字符串=搜索字符串怎么办?len返回一个整数,而不是字符串。没有理由这么做……你开始的条件是错误的。如果在开始时,find将返回0。您是一个救生员。你的回答很有魅力,我看到了我思考过程中的主要缺陷。我太专注于我的方法了,想不出别的什么。我想我需要更多的练习。@NikSotir我们曾经都是一样的。祝你好运:谢谢你的回答。得到这么多的好答案真的帮助我改进处理手头问题的方式。好答案!!!既然你提到了,我确实有点不清楚,但这不是故意的。我在编程和提问方面都缺乏经验,这也是原因之一。再次感谢,谢谢你的回答。正如我提到的,我对python相当陌生,所以我不熟悉所有可用的方法。
pos = target_string.find(search_string)
if pos < len_search:
return "Beginning"
elif pos >= len_target - 2 * len_search:
return "End"
else:
return "Middle"
from __future__ import print_function
target_string = "Georgia Tech"
for search_string in ("Georgia", "gia", "Tech", "bla"):
print("Result of searching for %s in %s: " % (search_string, target_string),
end="")
if target_string.startswith(search_string):
print("Beginning")
elif target_string.endswith(search_string):
print("End")
elif target_string.find(search_string) != -1:
print("Middle")
else:
print("Absent")
Result of searching for Georgia in Georgia Tech: Beginning
Result of searching for gia in Georgia Tech: Middle
Result of searching for Tech in Georgia Tech: End
Result of searching for bla in Georgia Tech: Absent