我如何在doctest中仅对全字匹配返回TRUE?

问题描述 投票:0回答:3

我有一个doctest,如果物种名称以'quercus'开头,则返回TRUE,但是如果给定的物种名称包含错字(例如'quercuss'),则也返回TRUE。如何确保不仅以该物种名称开头并且仅匹配完整单词,否则返回TRUE?

def is_an_oak(name):
    """ Returns True if name is starts with 'quercus'""" 
    return name.lower().startswith('quercus')

我尝试在单词后留一个空格,但是在我的脚本中进一步使用该功能时,它忽略了结果:

def is_an_oak(name):
    """ Returns True if name is starts with 'quercus'""" 
    return name.lower().startswith('quercus ')
python doctest
3个回答
0
投票

这应该可以解决问题:

def is_an_oak(name):
    """ Returns True if first word in name is 'quercus'""" 
    return name.split()[0].lower() == 'quercus'

编辑考虑到OP的评论:我添加的是用空格(.split())分割字符串,然后取第一个单词([0])并对其进行比较。


0
投票

尝试使用regular expression

import re

def is_an_oak(name):
   if re.match(r"^quercus|quercuss",name.lower()):
      return True
   else:
      return False

^quercus|quercuss是正则表达式^用于匹配以quercusquercuss开头|用于或此处。


0
投票

为了得到这个词;

import re

def is_an_oak(name):
    """ Returns Name if name is 'quercus'""" 
    return re.match("^[qQ]uercus*",name).string

为了获得TRUE / FALSE

 import re

 def is_an_oak(name):
     """ Returns True if name is 'quercus'""" 
     if re.match("^[qQ]uercus*",name):
         return True
     else:
         return False
© www.soinside.com 2019 - 2024. All rights reserved.