Почему мой код получает неправильную часть строки txt? - PullRequest
0 голосов
/ 07 октября 2019

У меня проблема в том, что я не могу получить правильную часть моей текстовой строки. Строка txt также должна быть в текущем порядке, я не могу поменять роль и имя.

   txt = \
    '''
    Company name
    leader: Claire
    cashier: Ole
    '''

    def role(name):
        start= txt.find(name)-len(name)
        end= txt.find('\n', start)
        return txt[start:end]

Если я наберу роль («Ole»), я ожидаю, что результат будет «кассир». Выходные данные, которые я получаю, это 'r: Ole'.

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Вы можете создать словарь, который связывает имена с соответствующими ролями, так что их будет очень легко найти даже в гораздо более длинном списке:

txt = \
'''
Company name
leader: Claire
cashier: Ole
'''

t = txt.split()
roles = {t[i] : t[i-1].strip(':') for i in range(3, len(t), 2)}

def role(name):
    return roles[name]

После настройки он довольно интуитивно понятен.

0 голосов
/ 07 октября 2019
stringy = "cashier: Ole"
stringy.partition(':')[0]

вы можете использовать .partition и принести только первый элемент

, это будет работать, но если в вашей строке есть что-то другое, оно может сломаться.

stringy = """    Company name
    leader: Claire
    cashier: Ole"""
def role(name):
    slice = stringy.partition(name)[0]
    role_str = slice.split(' ')[-2]
    return role_str
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...