【问题标题】:Python - Return starting index of exact match to sub-string [duplicate]Python - 将完全匹配的起始索引返回到子字符串[重复]
【发布时间】:2018-01-20 09:34:07
【问题描述】:

当子字符串完全匹配时,我需要找到字符串的起始索引。

line = "Your family and You are invited to my party"

我想找到Youi.e 的起始索引。 16

我试过了

line.find("You")

但是返回0

然后我尝试了,

import re
print(re.findall('\\bYou\\b', line))

但它会返回一个包含子字符串的列表

["You"]

【问题讨论】:

  • 返回0,因为您在0 位置有一个字符串"You""Your""You"。我认为您在一个单词的完全匹配中寻找什么,一个单词是由空格分隔的字母集合。
  • 很好地找到@Rawing 那个答案应该回答 OP 的查询

标签: python string substring


【解决方案1】:

如果您可以使用正则表达式,那么 this answer 应该可以解决您的问题。

将其应用于您的问题。我们得到

import re
a = re.search(r'\b(you)\b', 'Your family and you are invited to the party')
print a.start()

这给了16

这是否适用于“你”的所有可能职位? (开始,中间和结束)?让我们检查一下

str1 = "you hi"
str2 = "hi you"
str3 = "hi you hi"
re.search(r'\b(you)\b', str1).start()
# output is 0
re.search(r'\b(you)\b', str2).start()
# output is 3
re.search(r'\b(you)\b', str3).start()
# output is 3

更新 1:不区分大小写的匹配

如果您想要不区分大小写的匹配,请像这样使用re.IGNORECASE

re.search(r'\b(you)\b', str3, re.IGNORECASE).start()

更新 2:在正则表达式中传递变量而不是硬编码字符串

str = "Your family and you are invited to the party"
word_to_search = "you"
re_string = r"\b({})\b".format(word_to_search)
re.search(re_string, str).start()
#output is 16

【讨论】:

  • 如何使用正则表达式将变量传递给re.search,即re.search(r'\b('+key+')\b', str3).start() where key = 'you'
  • @BryceRamgovind 参考 DeepSpace 答案中的第二条评论(我的答案中的链接)。它说“就像使用任何 Python 字符串一样。您可以连接或使用 .format,即 word = 'laugh' ; re.search(r'\b({})\b'.format(word), string)” .我会尝试一下并更新我的答案
  • @BryceRamgovind 在尝试了我链接的答案中的建议后更新了我的答案。如果对您不起作用,请随时发表评论
【解决方案2】:

这应该工作

import re
line = "Your family and You are invited to my party"
re.search('\\bYou\\b', line).start() 

获取准确的索引

【讨论】:

    【解决方案3】:

    使用re.search 获得图案的适当位置。 例如:

    import re
    line = "Your family and You are invited to my party"
    res = re.search('\\bYou\\b', line)
    

    它给出的结果看起来像

    <_sre.sre_match span="(16," match="你">

    然后

    beg, end = res.span()
    

    其中变量beg 存储所需的索引。

    【讨论】:

    • 如何从结果中提取 int 16?
    • 只做res.start()
    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2023-03-31
    相关资源
    最近更新 更多