Python3: 通过使用用户定义的函数,我如何才能 return 仅使用 split 方法的字符串变量的特定元素?

Python3: By using a user-defined function, how can I return ONLY specific elements of a string variable using the split method?

我正在尝试编写一个函数,它将 return 全局字符串变量的特定元素基于给定参数。在这种情况下,我希望它 return 虚构人物的凭据。解决方案不必更改变量中的任何内容。

strvariable = '''\
Fictional Association
leader: Marisa
cashier: John
IT-consultant: Jenny
parking-manager: Marisa
programmer: Jenny
gardening-consultant: Marisa
fire-chief: Marisa
'''

def credentials(person):
    print(strvariable.split(':')) # this is clearly incorrect and returns the whole string without ':'

相反,我希望结果如下所示:

>>> credentials('Marisa')
['leader', 'parking-manager', 'gardening-consultant', 'fire-chief']

...往下看:

  1. 按换行符'\n'分割
  2. 做一个列表理解来存储结果
  3. 仅包含“:”的过滤行
  4. 通过“:”拆分理解中的每个项目
  5. 只存储拆分的第一个元素
  6. 添加额外的过滤器以仅捕获您想要的人
s = '''\
Fictional Association
leader: Marisa
cashier: John
IT-consultant: Jenny
parking-manager: Marisa
programmer: Jenny
gardening-consultant: Marisa
fire-chief: Marisa
'''

s.split('\n')
[x for x in s.split('\n')]
[x for x in s.split('\n') if ':' in x]
[x.split(':') for x in s.split('\n') if ':' in x]
[x.split(':')[0] for x in s.split('\n') if ':' in x]
[x.split(':')[0] for x in s.split('\n') if ':' in x if 'Marisa' in x]

# putting all that logic together

def get_cred_for_person(who):
   return [x.split(':')[0] for x in s.split('\n') if ':' in x if who in x]

print('Marisa is a:', get_cred_for_person('Marisa'))