包装python字典或设置新行

我正在尝试找到一种在dict中打印值的方法,以便在一定长度(例如5)之后,集合会中断并继续换行。

示例:

dict = {'Upper':'ABCDEFGHI','Lower':'abcdefghi','Number':'123456789'}

def insertNewlines(text,lineLength):
    if len(text) <= lineLength:
        return text
    else:
        return text[:lineLength] + '\n' + insertNewlines(text[lineLength:],lineLength)

for key,val in dict.items():
    print(insertNewlines(val,5))

输出

ABCDE
FGHI
abcde
fghi
12345
6789

所需的输出:

ABCDE
abcde
12345

FGHI
fghi
6789
sjhranran 回答:包装python字典或设置新行

pprint可用于将字典(或许多数据类型中的数组)打印到控制台:

import pprint

dictionary = {}
dictionary['x'] = 'xyz'
dictionary['y'] = 'abc'
pp = pprint.PrettyPrinter(width=5)
pp.pprint(dictionary)

此打印:

{'x': 'xyz','y': 'abc'}

它还具有其他选项,例如缩进。 https://docs.python.org/3/library/pprint.html

,

这很简单,有一些功能可以帮助您

def chunk(s,size):
    return [s[i:i+size] for i in range(1 + len(s) / size)]

def wrapped(info,size):
    values = info.values()
    chunks = [chunk(v,size) for v in values]
    groups = zip(*chunks)
    return '\n\n'.join('\n'.join(g) for g in groups)

以您的示例为例:

>>> info = {'Upper':'ABCDEFGHI','Lower':'abcdefghi','Number':'123456789'}
>>> print wrapped(info,5)
ABCDE
abcde
12345

BCDEF
bcdef
23456

如果要处理不匹配的行长:

from itertools import izip_longest

def wrapped(info,size) for v in values]
    groups = izip_longest(*chunks)
    return '\n\n'.join('\n'.join(filter(None,g)) for g in groups)

您可以得到如下结果:

ABCDE
abcde
12345

BCDEF
bcdef
23456

cdefg

defgh

,如果您希望行对齐

    groups = izip_longest(*chunks,fillvalue='')
    return '\n\n'.join('\n'.join(g) for g in groups)

给予

ABCDE
abcde
12345

BCDEF
bcdef
23456


cdefg



defgh
本文链接:https://www.f2er.com/2955032.html

大家都在问