【问题标题】:Python 3 Formatting Lists in accordance to PEP8根据 PEP8 的 Python 3 格式化列表
【发布时间】:2020-11-12 05:03:12
【问题描述】:

我正在处理数百个对象长的多个列表,我必须正确格式化它们才能工作。是否有一个简单的循环可以获取我的列表并根据 PEP8 对其进行格式化。

PEP8 将所有行限制为最多 79 个字符。在不中途断开字符串但仍符合此规则的情况下完成此操作的最佳方法是什么?

我们可以使用下面的列表作为示例。我通常会得到我格式化为列表的随机输出,但它们是连续的,我会花费数小时来使它们符合 79 个字符的规则。

List = ['1','2','3','4','5','6','7','string','bean','bling','bling', 'beep', 'boop', 'steep', 'stoop', 'Amberlance', 'you', 'get','my', 'point', ',', 'right', '?']

【问题讨论】:

  • 你是说要格式化成字符串?
  • 让代码格式化程序为您完成工作。我喜欢blackyapf
  • @JohnIson 不,我的意思是我把一个字符串变成列表。清单往往太长了。我想根据 PEP8 将列表格式化为不超过 79 个字符的限制。我想知道是否可以创建一个脚本,该脚本可以在一定字符数后为这些列表进行文本换行,如果可以的话,如何。
  • @jakub 我没用过这些我会检查一下。
  • "几个数百个对象长的列表" 为什么这些在 python 源代码中而不是一些外部数据文件,例如 JSON?

标签: python python-3.x list formatting pep8


【解决方案1】:

您可以使用pprint 模块。该模块提供了一种以可用作解释器输入的形式“漂亮打印”任意 Python 数据结构的能力。这就是你要找的 -

import pprint

myList = ['1','2','3','4','5','6','7','string','bean','bling','bling', 'beep', 'boop', 'steep', 'stoop', 'Amberlance', 'you', 'get','my', 'point', ',', 'right', '?']
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(myList)

输出

[   '1',
    '2',
    '3',
    '4',
    '5',
    '6',
    '7',
    'string',
    'bean',
    'bling',
    'bling',
    'beep',
    'boop',
    'steep',
    'stoop',
    'Amberlance',
    'you',
    'get',
    'my',
    'point',
    ',',
    'right',
    '?']

或者如果你想在一行中打印列表的 79 个字符,那么 -

import pprint

myList = ['1','2','3','4','5','6','7','string','bean','bling','bling', 'beep', 'boop', 'steep', 'stoop', 'Amberlance', 'you', 'get','my', 'point', ',', 'right', '?']
pp = pprint.PrettyPrinter(width=79, compact=True)
pp.pprint(myList)

输出

['1', '2', '3', '4', '5', '6', '7', 'string', 'bean', 'bling', 'bling', 'beep',
 'boop', 'steep', 'stoop', 'Amberlance', 'you', 'get', 'my', 'point', ',',
 'right', '?']

【讨论】:

  • 这不是我认为的“漂亮”,它牺牲了很多垂直空间只是为了让每行一个项目。
  • 感谢@MarkRansom 指出这一点。我已经根据评论更新了答案..!!
  • 不能按列排列项目太可惜了。
  • 第二个是我需要的。谢谢各位。它使这些列表更易于消化。谢谢。
猜你喜欢
  • 2015-12-21
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 2011-10-22
  • 2015-01-20
  • 1970-01-01
相关资源
最近更新 更多