Как я могу вернуть TRUE только для полных совпадений в моем тесте? - PullRequest
0 голосов
/ 16 октября 2019

У меня есть тест для возврата TRUE, если название вида начинается с quercus, но также возвращается TRUE, если имя данного вида содержит опечатку (например, quercuss). Как мне убедиться, что 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 ')

Ответы [ 2 ]

1 голос
/ 16 октября 2019

для получения слова;

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
1 голос
/ 16 октября 2019

Это должно сработать:

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

Редактировать с учетом комментария OP: я добавил разделение строки на пробелы (.split()), затем взятие первого слова ([0]) иделать сравнение на нем.

...