Python 3 根据 PEP8 格式化列表

问题描述 投票:0回答:2

我正在处理几个长达数百个对象的列表,我必须正确设置它们的格式才能工作。是否有一个简单的循环可以获取我的列表并根据 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', '?']
python python-3.x list formatting pep8
2个回答
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', '?']

0
投票

您可以使用 pprintblackyapf

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

使用pprint

from pprint import pprint

pprint(mylist, compact=True)

输出:

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

使用黑色

import black  # pip install black
print(black.format_str(repr(mylist), mode=black.Mode()))

输出:

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

对于长列表,在撰写本文时

black
格式化每行一个元素。

使用yapf

from yapf.yapflib.yapf_api import FormatCode  # pip install yapf

print(FormatCode(repr(mylist))[0])

输出:

[
    '1', '2', '3', '4', '5', '6', '7', 'string', 'bean', 'bling', 'bling',
    'beep', 'boop', 'steep', 'stoop', 'Amberlance', 'you', 'get', 'my',
    'point', ',', 'right', '?'
]
© www.soinside.com 2019 - 2024. All rights reserved.