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