Python 返回单词在字符串中的位置的函数

Python 返回单词在字符串中的位置的函数,python,string,Python,String,我正在编写一个包含两个参数的函数:搜索字符串和目标字符串。函数将在目标字符串中查找搜索字符串,并应返回一个字符串,表示在目标字符串中找到搜索字符串的位置 例如,如果目标字符串是target_string=Georgia Tech和search_string=Georgia,则它应该返回字符串开头。如果搜索字符串为gia,则应返回中间;如果搜索字符串为Tech,则应返回End 代码: 其中len_dif是搜索字符串和目标字符串的长度之差。这样做会打印出正确的答案,但会弄乱最后的elif。因此,如果

我正在编写一个包含两个参数的函数:搜索字符串和目标字符串。函数将在目标字符串中查找搜索字符串,并应返回一个字符串,表示在目标字符串中找到搜索字符串的位置

例如,如果目标字符串是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