我正在使用slackbot。我有一个json文件和python代码,它们根据用户的输入输出一些内容。有一个搜索命令可从json文件输出搜索结果。当前输出未格式化,因为当从json中获取值时,它们会附加到列表中,然后返回到主python程序。
我尝试创建一个循环,该循环将某种程度上解析搜索输出并将其缩减,以使每组值都是独立的,然后添加到可以格式化的列表中。我尝试过的循环并没有真正起作用,而且我不太确定如何正确制作可用于格式化输出的循环。我也尝试过使用format()格式化输出,但由于它是一个列表,因此不起作用。
这是当前搜索输出的示例。
if command.startswith(SEARCH):
try:
search = search_data(command.split(' ')[1])
response = search
except KeyError:
response = 'This search key does not exist.'
except TypeError:
response = 'Wrong search input'
这是我从另一个python脚本导入的示例搜索命令:
def search_data(keyword):
result = []
for key, value in data.items():
first = value['first']
last = value['last']
if keyword in first:
result.append(value)
elif keyword in last:
result.append(value)
return result
这是一个示例JSON:
{
"1": {
"id": "1",
"first": "Joe",
"last": "Adam"
},
"2": {
"id": "2",
"first": "Mary",
"last": "Smith"
},
"3": {
"id": "3",
"first": "Ann",
"last": "John"
}
}
我有另一个输出,我使用此行代码来格式化,并且我想以相同的方式格式化列表输出。
response = '*ID:* {}\n *First:* {}\n *Last:*
{}\n\n'.format(search['id'],search['first'],search['last'])
预期输出是供用户使用slackbot在slack中输入搜索内容。例如,用户可以输入“搜索J”,并且输出列出在“第一个”或“最后一个”值中具有J值的匹配值集。我当前的输出类似于:
[{"id":"1","first":"Joe","last":"Adam"},
{"id":"2","first":"Ann","last":"John"}]
但是我想将其格式化为:
ID: 1
First: Joe
Last: Adam
ID: 2
First: Ann
Last: John
答案 0 :(得分:0)
这应该做
"\n\n".join([f"ID: {out['id']}\nFirst: {out['first']}\nLast: {out['last']}" for out in result])