我有一个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 ')
这应该可以解决问题:
def is_an_oak(name):
""" Returns True if first word in name is 'quercus'"""
return name.split()[0].lower() == 'quercus'
编辑考虑到OP的评论:我添加的是用空格(.split()
)分割字符串,然后取第一个单词([0]
)并对其进行比较。
import re
def is_an_oak(name):
if re.match(r"^quercus|quercuss",name.lower()):
return True
else:
return False
^quercus|quercuss
是正则表达式^
用于匹配以quercus
或quercuss
开头|
用于或此处。
为了得到这个词;
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