我正在用python电报机器人包编写一个电报机器人。 我想输出一个列表,将搜索结果存储到带有python电报机器人的聊天机器人。有时结果超过4000个字符,不允许输出。所以我想单独发送结果,如果列表中的项目超过10个,则让它在每条消息的列表中发送10个项目。到目前为止,我现在可以通过聊天机器人以少于4000个字符的格式输出我想要的格式,但我不知道如何使每条消息包含10个项目?我检查了slice,但它似乎只适用于列表,而python电报机器人只导出文本。由于学校日期是字典,我还尝试在“text=”搜索结果:\n“&;之间设置for循环;“对于i,枚举(搜索结果)中的school_数据:”,并且在这个for循环之后,它不断重复最后一行或重复单个行;使用了split()(希望从修改后的文本中修剪),但会弄乱输出格式
以下是我一直在工作的项目的理想输出格式:
university_name: blablabla
department: blablabla
staff_name: blablabla
ranking: blablabla
specialisation: blablabla
website: blablabla
-----
university_name: blablabla
department: blablabla
staf_name: blablabla
ranking: blablabla
specialisation: blablabla
website: blablabla
------
.
.
.
以下是我可以打印的代码,无论列表中有多少项:
search_result = []
for items in data["staffs"]:
specialisation = items["staff_specialisation"]
if keyword in specialisation:
search_result.append({"university_name": items["university"], "department": items["department"], "staff_name": items["staff_name"], "ranking": items["ranking"], "specialisation": items["staff_specialisation"], "website": items["website"]})
text = "Searching result:\n"
for i, school_data in enumerate(search_result):
for key in school_data:
text += "\n" + "{}:{}".format(key, school_data[key])
text += "\n------"
update.message.reply_text(text)
非常感谢
当您进行迭代时,我会将
reply_text()
放在if item%10==9:
中。使用%10
(modulo10),您将每10个循环执行一次操作。为什么是9?因为枚举从0开始,if
也将在每个循环的末尾)但是,如果项目列表不是10的倍数,则会留下一些项目而不显示。例如,如果您的项目列表有28个项目,您将显示前10个项目,后10个项目,仅此而已,您将错过最后8个项目。为了解决这个问题,最好使用
if item%10==9 or item==len(itemlist)-1:
,这样if
还会检查您是否在搜索结果的最后一项,并执行最后的reply_text()
在这种特殊情况下,if子句位于第一个for循环中,该循环迭代搜索结果。sames用于我们在
if
中使用的i计数器相关问题 更多 >
编程相关推荐