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 中垂直居中文本
告别微软加入 Linux 基金会,SONiC 在更大的开源生态中展翅高飞
在更大的数据表上为每个用户选择第一行/最后一行的 SQL 性能