跳转到主要内容

将Python代码(列表的列表)格式化为固定宽度表格。

项目描述

table-format

Tests Cookiecutter template from @cthoyt PyPI PyPI - Python Version PyPI - License

将Python代码(列表的列表)格式化为固定宽度表格。

动机和用法

您有一些这样的测试或其他代码

def test_the_table():
    assert generate_the_table() == [
        ['Date', 'Description', 'Amount', 'Balance'],
        ['2021-04-06', 'Account opened', 0, 0],
        ['2021-04-07', 'Cash deposit at 123 Main St, Newtown', 1000, 1000],
        ['2021-04-08', 'ACME anvils', -300, 700],
    ]

或者更糟的是,像这样

assert generate_the_table() == [
    [
        "Date",
        "Description",
        "Amount",
        "Balance",
    ],
    [
        "2021-04-06",
        "Account opened",
        0,
        0,
    ],
    [
        "2021-04-07",
        "Cash deposit at 123 Main St, Newtown",
        1000,
        1000,
    ],
    [
        "2021-04-08",
        "ACME anvils",
        -300,
        700,
    ],
]

是否希望有列对齐的可读性测试?

将整个列表的列表复制到剪贴板,然后通过table-format --guess-indent

  • 在Linux上,您可以使用xselxclip
  • 在MacOS上,您可以使用pbpaste
  • 在Windows PowerShell上,您可以使用Get-Clipboard

Linux示例

$ xsel | table-format --guess-indent
[
        ['Date',       'Description',                          'Amount', 'Balance'],
        ['2021-04-06', 'Account opened',                       0,        0        ],
        ['2021-04-07', 'Cash deposit at 123 Main St, Newtown', 1000,     1000     ],
        ['2021-04-08', 'ACME anvils',                          -300,     700      ],
    ]

输出应准备好粘贴回您的编辑器。

选项

通过传递--help标志来显示所有选项

$ table-format --help

⬇️ 安装

最新版本可以从PyPI安装

$ pip install table-format

您还可以使用 pipx 在隔离环境中更方便地安装。

$ pipx install table-format

查看 变更日志

最新代码和数据可以直接通过以下方式从 GitHub 安装:

$ pip install git+https://github.com/spookylukey/table-format.git

要开发模式安装,请使用以下命令:

$ git clone git+https://github.com/spookylukey/table-format.git
$ cd table-format
$ pip install -e .

其他技巧

元组

我们也支持元组列表以及列表列表,并且会保留这些结构。

Black

Black 将还原如下格式的代码。但是,您可以使用 # fmt: off# fmt: on 命令来停止 Black 格式化这些代码块。

为了更类似于 Black 风格地格式化引号,请使用 --quote-style=double(这不会完全相同于 Black,它只是将单引号改为双引号)。

Flake8

Flake8 可能会抱怨以下问题:

  • E202 - 在 ] 前的空白
  • E241 - 逗号后有多余的空格
  • E501 - 行太长

最简单的解决方案是在您的配置中全局静默这些 flake8 错误,特别是如果您正在使用像 Black 这样的格式化程序,它将自动为您强制执行这些规则。

否则,您可以使用 noqa:E202,E241,E501 在每行的基础上静默错误,您可以将这些自动添加到每行的末尾,如下所示

$ table-format --add-noqa=E202,E241,E501

其他 noqa 项和其他行尾注释将被保留。

Emacs

使用默认键绑定,执行 C-u M-| table-format --guess-indent ENTER 将用 table-format 格式化后的版本替换当前区域。

您可以将它封装在一个漂亮的函数中,如下所示

(defun align-python-table ()
  (interactive)
  (shell-command-on-region
   ;; beginning and end of region
   (region-beginning)
   (region-end)
   ;; command and parameters
   "table-format --guess-indent"
   ;; output buffer
   (current-buffer)
   ;; replace?
   t
   ;; name of the error buffer
   "*Table-Format Error Buffer*"
   ;; show error buffer?
   t))

其他编辑器

欢迎为在其他编辑器中使用提供说明的贡献!

⚖️ 许可证

本软件包中的代码根据 MIT 许可证授权。

🙏 贡献

贡献,无论是提交问题、提交拉取请求还是分叉,都受到赞赏。有关参与的信息,请参阅 CONTRIBUTING.rst

🛠️ 开发

README 的最后一部分是如果您想要通过代码贡献来参与。

❓ 测试

在克隆仓库后,安装开发需求

pip install -r requirements-dev.txt

并运行 pytest

pytest

跨所有环境测试

$ tox

此外,这些测试会自动与每个提交一起在 GitHub Action 中重新运行。

🍪 Cookiecutter 致谢

此软件包是用 @audreyfeldroycookiecutter 软件包和 @cthoytcookiecutter-snekpack 模板创建的。

项目详情


下载文件

下载适合您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源代码分发

table-format-1.4.2.tar.gz (15.6 kB 查看哈希值)

上传时间 源代码

构建分发

table_format-1.4.2-py3-none-any.whl (11.1 kB 查看哈希值)

上传时间 Python 3

由以下支持