标签: pprint

如何覆盖引用类型的println行为

我有一个使用dosync和创建的循环图ref-set.当我传递给println我时,我得到了一个java.lang.StackOverflowError我所期望的,因为它有效地试图打印一个无限嵌套的结构.

我发现,如果我这样做(str my-ref)会产生看起来像vertex@23f7d873并且实际上并不试图遍历结构并将所有东西都打印出来的东西,所以这就解决了这个问题,但是只有在我非常小心我的情况时才会有所帮助. m打印到屏幕上.我希望能够打电话给(println my-graph)它打印ref作为某种类型的自定义文本(可能涉及str),以及其他非ref的东西通常.

目前我有一个自定义打印功能,可以自己打印结构的每个元素,并完全跳过打印ref.(事实证明,看着vertex@23f7d873实际上并不是非常有用).使用起来很尴尬,阻碍了在REPL中对东西进行随意检查,同时也阻止了Emacs检查员在swank.core/break调试时查看内容.

一个细节ref实际上是一个值,defstruct其中还包含一些我试图正常打印的其他东西.

所以我想知道我应该走哪条路.我看到这些选项:

  1. 弄清楚extend-type并将CharSequence协议应用于我的defstructed结构,以便在遇到ref它时可以正常工作.这仍然需要对结构进行逐个字段检查,并且需要特殊情况ref,但至少它将问题本地化为结构而不是包含结构的任何内容.
  2. 弄清楚如何CharSequence在遇到协议时覆盖协议ref.这允许更加本地化的行为,并允许我在REPL处查看循环引用,即使它不在结构体内.这是我的首选.
  3. 弄清楚如何做toString我认为在某种程度上被称为某种程度的事情println.我对这个选项最无知.对其他人一无所知,但我一直在读书Joy of Clojure,现在我受到了启发.

同样,此解决方案应该适用于printpprint尝试打印循环引用时通常会禁用的任何其他内容.我应该采用什么策略?

非常感谢任何输入.

graph clojure cyclic charsequence pprint

5
推荐指数
1
解决办法
940
查看次数

如何强制pprint每行打印一个list/tuple/dict元素?

如何强制pprint()每行打印一个list/tuple/dict元素?

>>> from pprint import pprint
>>> my_var = ['one', 'two', ('red','green'), {'state' : 'Oregon', 'city' : 'Portland'}]
>>> pprint(my_var)
['one', 'two', ('red', 'green'), {'city': 'Portland', 'state': 'Oregon'}]
Run Code Online (Sandbox Code Playgroud)

我希望输出类似于:

['one',
 'two',
 ('red',
  'green'),
 {'city': 'Portland',
  'state': 'Oregon'}]
Run Code Online (Sandbox Code Playgroud)

python dictionary list pretty-print pprint

5
推荐指数
1
解决办法
3508
查看次数

使用pprint时,抑制字符串上的unicode前缀

使用pprint模块打印对象时是否有任何干净的方法来抑制unicode字符前缀?

>>> import pprint
>>> pprint.pprint({u'foo': u'bar', u'baz': [u'apple', u'orange', u'pear', u'guava', u'banana'], u'hello': u'world'})
{u'baz': [u'apple', u'orange', u'pear', u'guava', u'banana'],
 u'foo': u'bar',
 u'hello': u'world'}
Run Code Online (Sandbox Code Playgroud)

这看起来很难看.有没有办法打印每个对象的__str__值,而不是__repr__?

python pprint

5
推荐指数
1
解决办法
6398
查看次数

在Python中结合reprlib和pprint?

我可以在pprint.pprint(新行,缩进)中输出漂亮的打印数据,还可以同时缩短列表reprlib.repr吗?

一个丑陋的黑客似乎是pprint(eval(reprlib.repr(data))),但有更好的方法吗?

python pprint

5
推荐指数
1
解决办法
386
查看次数

在Python中从二维数组打印时如何排列列?

我想以表格格式显示一个简单的二维数组,标题位于顶部,以便值在标题下对齐。有没有办法做到这一点?我已经使用 numpy 查看了 pprint 和打印,但无法使其工作。这是我现在所拥有的:

myArray = [['Student Name','Marks','Level'],['Johnny',68,4],['Jennifer',59,3],['William',34,2]]

for row in myArray:
    print(" ")
    for each in row:
        print(each,end = ' ')
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

python arrays 2d pprint

5
推荐指数
1
解决办法
5200
查看次数

无法导入pprint

在这里编程新手.每当我尝试在Python IDLE中"导入pprint"时,我都会收到以下错误:

>>> import pprint
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    import pprint
  File "C:\Python34\pprint.py", line 10, in <module>
    pprint(count)
NameError: name 'pprint' is not defined
Run Code Online (Sandbox Code Playgroud)

以为我会尝试在命令行中"pip install pprint",但这也不起作用:

PS C:\Python34> pip install pprint
Collecting pprint
Could not find a version that satisfies the requirement pprint (from versions: )
No matching distribution found for pprint 
Run Code Online (Sandbox Code Playgroud)

我认为Python 3.4.3应该带有pprint模块.我如何让它工作?似乎无法导入pprint,但所有其他模块都工作正常.我需要pprint模块来完成Automate The Boring Stuff with Python的一些练习.谢谢你看我的问题.

python import pprint

5
推荐指数
1
解决办法
6733
查看次数

如何从celery pprint输出中删除时间戳?

当运行celery worker时,的输出的每一行pprint总是以时间戳作为前缀,并且也将被剥离。这使得它非常不可读:

[2015-11-05 16:01:12,122: WARNING/Worker-2] {
[2015-11-05 16:01:12,122: WARNING/Worker-2] u'key1'
[2015-11-05 16:01:12,122: WARNING/Worker-2] :
[2015-11-05 16:01:12,122: WARNING/Worker-2] 'value1'
[2015-11-05 16:01:12,122: WARNING/Worker-2] ,
u'_id':
[2015-11-05 16:01:12,122: WARNING/Worker-2] ObjectId('55fff3b74322c53d18ae4687')
...
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉芹菜不要格式化输出pprint

更新:

这个问题有点错。所需的输出如下所示:

[2015-11-05 16:01:12,122: WARNING/Worker-2] 
{
    u'key1': 'value1',
    u'_id': ObjectId('55fff3b74322c53d18ae4687'),
    ...
Run Code Online (Sandbox Code Playgroud)

python celery pprint

5
推荐指数
1
解决办法
157
查看次数

在Python中使用pprint.pprint之后,是否可以避免排序字典输出?

代码是:

from pprint import pprint
d = {"b" : "Maria", "c" : "Helen", "a" : "George"}
pprint(d, width = 1)
Run Code Online (Sandbox Code Playgroud)

输出为:

{'a': 'George',
'b': 'Maria',
'c': 'Helen'}
Run Code Online (Sandbox Code Playgroud)

但是,所需的输出是:

{'b': 'Maria',
'c': 'Helen',
'a': 'George'}
Run Code Online (Sandbox Code Playgroud)

可以使用pprint完成此操作,还是有其他方法?

python dictionary pretty-print pprint

5
推荐指数
1
解决办法
420
查看次数

找不到 pprint 的匹配发行版

我正在尝试安装该requirements.txt文件skiptracer,但它一直说

ERROR: Could not find a version that satisfies the requirement pprint (from -r requirements.txt (line 7)) (from versions: none)
ERROR: No matching distribution found for pprint (from -r requirements.txt (line 7))
Run Code Online (Sandbox Code Playgroud)

我什至无法安装pprint

pip pprint requirements.txt

5
推荐指数
1
解决办法
1万
查看次数

如何漂亮地打印 f 弦?

尝试从 f 字符串打印字典:

import pprint as pp

my_dict = {
    "key_a": ["here", "are", "the", "things"]
    , "key_b": ["that", "i", "want"]
    , "key_b": ["to", "share", "with", "the", "worlddddddddddddddddddddd"]
}

pp.pprint(f"Let's talk about all of these things:\n\n{my_dict}")
Run Code Online (Sandbox Code Playgroud)

输出(不漂亮):

("Let's talk about all of these things:\n"
 '\n'
 "{'key_a': ['here', 'are', 'the', 'things'], 'key_b': ['to', 'share', 'with', "
 "'the', 'worlddddddddddddddddddddd']}")
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个在 f 字符串中工作,这样我就不必这样做pp.pprint(my_dict)

python pprint f-string

5
推荐指数
1
解决办法
2300
查看次数