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']
...往下看:
- 按换行符'\n'分割
- 做一个列表理解来存储结果
- 仅包含“:”的过滤行
- 通过“:”拆分理解中的每个项目
- 只存储拆分的第一个元素
- 添加额外的过滤器以仅捕获您想要的人
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'))
我正在尝试编写一个函数,它将 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']
...往下看:
- 按换行符'\n'分割
- 做一个列表理解来存储结果
- 仅包含“:”的过滤行
- 通过“:”拆分理解中的每个项目
- 只存储拆分的第一个元素
- 添加额外的过滤器以仅捕获您想要的人
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'))