Python - 检查字符串是不是在更大的字符串中

Posted

技术标签:

【中文标题】Python - 检查字符串是不是在更大的字符串中【英文标题】:Python - Check If string Is In bigger StringPython - 检查字符串是否在更大的字符串中 【发布时间】:2015-07-07 05:36:06 【问题描述】:

我正在使用 Python v2.7,我正在尝试找出您是否可以判断一个单词是否在字符串中。

例如,如果我有一个字符串和我想查找的单词:

str = "ask and asked, ask are different ask. ask"
word = "ask"

我应该如何编码,以便我知道我获得的结果不包括属于其他单词的单词。在上面的示例中,我想要除“询问”之外的所有“询问”。

我尝试了以下代码,但它不起作用:

def exact_Match(str1, word):
    match = re.findall(r"\\b" + word + "\\b",str1, re.I)
    if len(match) > 0:
        return True
    return False 

谁能解释一下我该怎么做?

【问题讨论】:

在原始字符串中使用单个反斜杠。 Casimir 的基本意思是要么使用r"\b",要么使用"\\b"。因此,在您的 sn-p 中,正确的调用将是 r"\b" + word + r"\b""\\b" + word + "\\b" 【参考方案1】:

您可以使用以下功能:

>>> test_str = "ask and asked, ask are different ask. ask"
>>> word = "ask"

>>> def finder(s,w):
...   return re.findall(r'\b\b'.format(w),s,re.U)
... 
>>> finder(text_str,word)
['ask', 'ask', 'ask', 'ask']

注意,边界正则表达式需要\b

或者您可以使用以下函数返回单词的索引: 在拆分字符串中:

>>> def finder(s,w):
...   return [i for i,j in enumerate(re.findall(r'\b\w+\b',s,re.U)) if j==w]
... 
>>> finder(test_str,word)
[0, 3, 6, 7]

【讨论】:

@FranciscoF 在docs.python.org/3/library/stdtypes.html#str.format阅读完整文档 不要使用str作为变量名,因为这会覆盖str()函数。 我有一个问题,这个词是 utf-8 格式,这给了我一个错误。 @FranciscoF 什么样的错误?你也可以在findall函数中使用re.U标志!

以上是关于Python - 检查字符串是不是在更大的字符串中的主要内容,如果未能解决你的问题,请参考以下文章

ToolStripMenuItem 更大的垂直填充,或在更大的 ToolStripMenuItem 中垂直居中文本

在更大的 <form> 中嵌入 HTML <form>?

告别微软加入 Linux 基金会,SONiC 在更大的开源生态中展翅高飞

在更大的数据表上为每个用户选择第一行/最后一行的 SQL 性能

Oracle - 如何检查多条记录中的值以及一个值是不是匹配 - 将其用于更大的数据集

核心数据是不是在后台进行自己的类型转换?