RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1590679
Accepted
Алексей
Алексей
Asked:2024-08-14 21:52:48 +0000 UTC2024-08-14 21:52:48 +0000 UTC 2024-08-14 21:52:48 +0000 UTC

如何将时间对齐到右侧?

  • 772

需要从这

name1212 | (0:55)
name12122 | (0:43)
name45152 | (0:38)
name121212 | (0:25)
name11212 | (0:18)
name1123 | (0:06)
name123 | (0:02)
name1232 | (0:01)

是吗

name1212    | (0:55)
name12122   | (0:43)
name45152   | (0:38)
name121212  | (0:25)
name11212   | (0:18)
name1123    | (0:06)
name123     | (0:02)
name1232    | (0:01)

但问题是,为了接收玩家和时间,我将其作为一个单独的函数来执行,并且我不明白如何像其他人一样实现它。

获取玩家和时间的代码:

    def get_players_with_time(server_ip):
        ip = str(server_ip.split(',')[0])
        port = int(server_ip.split(',')[1])
        address = (f"{ip}", port)

        get_players = a2s.players(address)
        players = "\n".join(player.name + ' | (' + str(datetime.timedelta(seconds=player.duration))[0:4] + ')' for player in get_players)
        return players
python
  • 2 2 个回答
  • 46 Views

2 个回答

  • Voted
  1. Best Answer
    Amgarak
    2024-08-14T22:07:41Z2024-08-14T22:07:41Z

    你可以这样做:

    get_players = ["Амгарак", "Стас", "Тёмный лорд"]
    max_len = 15
    players = "\n".join(player+' '*(max_len - len(player))+' | (ВРЕМЯ ИГРЫ)' for player in get_players)
    
    print(players)
    

    结论:

    Амгарак         | (ВРЕМЯ ИГРЫ)
    Стас            | (ВРЕМЯ ИГРЫ)
    Тёмный лорд     | (ВРЕМЯ ИГРЫ)
    
    [Program finished]
    

    另一种选择是根据最长名称确定最大字符串长度:

    max_len= max(len(player) for player in get_players)
        
    players = "\n".join(player.ljust(max_len + 1)+' | (ВРЕМЯ ИГРЫ)' for player in get_players)
    
    print(players)
    

    结论:

    Амгарак      | (ВРЕМЯ ИГРЫ)
    Стас         | (ВРЕМЯ ИГРЫ)
    Тёмный лорд  | (ВРЕМЯ ИГРЫ)
    
    [Program finished]
    

    事实证明,使用 telegram 并不那么简单,所以我建议这个选项:

    players = "\n".join(player.ljust(max_len + 1) + '| (ВРЕМЯ ИГРЫ)' for player in get_players)
    players = f"```\n{players}\n```"
    
    bot.send_message(message.chat.id, players, parse_mode='Markdown')
    

    结论:

    在此输入图像描述

    主要思想是(```)允许电报将文本感知为代码+parse_mode='Markdown'

    这样,所有字符都会占用相同的空间,从而保留格式。


    pip 安装 PrettyTable

    如果添加PrettyTable库,您可以获得通常漂亮的输出:

    table = PrettyTable()
    get_players = ["Амгарак", "Стас", "Тёмный лорд"]
    table.field_names = ['Player', 'Time']
    
    table.align["Player"] = "l"
    table.align["Time"] = "c"
    
    for player in get_players:
        table.add_row([player, '(ВРЕМЯ ИГРЫ)'])
    
    players = table.get_string()
    players = f"```\n{players}\n```"
    print(players)
    

    结论:

    在此输入图像描述

    表格对齐方式可以设置为r、l、c(右、左或中)

    • 3
  2. mrgervant
    2024-08-14T22:19:17Z2024-08-14T22:19:17Z

    有一个选项可以使用对齐运算符在 f 字符串内部进行格式化(或通过格式的老式方式):

    get_players = ["foo", "foobar", "foobarbaz"]
    max_len = 15
    players = "\n".join(f"{player:<{max_len}} | (ВРЕМЯ ИГРЫ)" for player in get_players)
    
    print(players)
    

    结论:

    foo             | (ВРЕМЯ ИГРЫ)
    foobar          | (ВРЕМЯ ИГРЫ)
    foobarbaz       | (ВРЕМЯ ИГРЫ)
    

    <| >| =| ^- 对齐运算符(左、右、两端对齐 -仅适用于数字、居中

    在运算符之前,您可以放置​​一个需要填充空格而不是空格的符号:{player:*<{max_len}}- fill*

    在运算符之后,指示一个数字,该数字确定输出该行的数量。如果超过了,就会发生转变。因此,首先需要max_len通过最长的名称来确定。

    或者,您可以配置名称在超过指定长度时被修剪.ЧИСЛО- 通过添加:

    get_players = ["foo", "foobar", "foobarbaz"]
    max_len = 7
    players = "\n".join(f"{player:<{max_len}.{max_len}} | (ВРЕМЯ ИГРЫ)" for player in get_players)
    
    print(players)
    

    结论:

    foo     | (ВРЕМЯ ИГРЫ)  <-- добавили пробелов
    foobar  | (ВРЕМЯ ИГРЫ)  <-- добавили пробелов
    foobarb | (ВРЕМЯ ИГРЫ)  <-- обрезали строку до 7 символов
    

    您可以“玩”它并灵活地自定义输出:

    get_players = ["foo", "foobar", "foobarbaz"]
    max_len_str = 7
    max_len_name = 5
    players = "\n".join(f"{player:<{max_len_str}.{max_len_name}} | (ВРЕМЯ ИГРЫ)" for player in get_players)
    
    print(players)
    
    foo     | (ВРЕМЯ ИГРЫ)
    fooba   | (ВРЕМЯ ИГРЫ)
    fooba   | (ВРЕМЯ ИГРЫ)
    
    • 1

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5