【问题标题】:How to format bot 'send_message' output so it aligns like a table?如何格式化机器人'send_message'输出,使其像表格一样对齐?
【发布时间】:2019-09-25 13:50:22
【问题描述】:

我正在尝试使用出色的 python-telegram-bot 模块创建一个简单的 Telegram Bot,但我无法将字典与默认的 "{0:<20} {1}".format(key, value) 想法对齐。

让我举个例子:

MAP = {
    "one": "1",
    "two": "2",
    "three": "3",
    "four": "4",
    "five": "5",
    "six": "6",
    "seven": "7",
    "eight": "8"
}

tmpstring = ""

for key, value in MAP.items():
    tmpstring = tmpstring + "{0:<20} {1}".format(key, value) + "\n"

print(tmpstring)
context.bot.send_message(chat_id=update.message.chat_id, text=tmpstring)

打印出来的效果是这样的:

one                  1
two                  2
three                3
four                 4
five                 5
six                  6
seven                7
eight                8

正如预期的那样完美对齐,但 Telegram 中的消息如下所示:

所以我的问题是: 如何对齐聊天消息,使其看起来像打印输出?

【问题讨论】:

    标签: python-3.x telegram-bot python-telegram-bot


    【解决方案1】:

    使用Markdowns (V2) '预格式化的固定宽度代码块'来保持对齐。 [Docs]

    使用 3 反引号 (```) 将 完美对齐 表包装在 代码块

    ```
    one          1
    two          2
    three        3
    ```
    

    parse_mode 选项设置为:MarkDown (V2) 发送您的消息

    【讨论】:

    • 完美,谢谢,将字符串包装在"```" 中并在send_message 中使用parse_mode="Markdown" 解决了我的问题。
    • @Lyux 完美!请记住,最终用户的屏幕分辨率决定表格是否正常显示。我曾经通过电报发送一些 3 列表。较小的手机需要横向模式才能看到表格。我对看不到他们的 iPhone 用户遇到了最大的麻烦,电报包裹了信息,即使是横向的!
    • 当包装成```时,你不能在文本中添加链接,比如[one]('link.com/'),因为它会像一段代码一样显示出来?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2011-04-09
    相关资源
    最近更新 更多