我有一个使用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其中还包含一些我试图正常打印的其他东西.
所以我想知道我应该走哪条路.我看到这些选项:
extend-type并将CharSequence协议应用于我的defstructed结构,以便在遇到ref它时可以正常工作.这仍然需要对结构进行逐个字段检查,并且需要特殊情况ref,但至少它将问题本地化为结构而不是包含结构的任何内容.CharSequence在遇到协议时覆盖协议ref.这允许更加本地化的行为,并允许我在REPL处查看循环引用,即使它不在结构体内.这是我的首选.toString我认为在某种程度上被称为某种程度的事情println.我对这个选项最无知.对其他人一无所知,但我一直在读书Joy of Clojure,现在我受到了启发.同样,此解决方案应该适用于print和pprint尝试打印循环引用时通常会禁用的任何其他内容.我应该采用什么策略?
非常感谢任何输入.
如何强制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) 使用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__?
我可以在pprint.pprint(新行,缩进)中输出漂亮的打印数据,还可以同时缩短列表reprlib.repr吗?
一个丑陋的黑客似乎是pprint(eval(reprlib.repr(data))),但有更好的方法吗?
我想以表格格式显示一个简单的二维数组,标题位于顶部,以便值在标题下对齐。有没有办法做到这一点?我已经使用 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 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的一些练习.谢谢你看我的问题.
当运行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) 代码是:
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完成此操作,还是有其他方法?
我正在尝试安装该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
尝试从 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)?
pprint ×10
python ×8
dictionary ×2
pretty-print ×2
2d ×1
arrays ×1
celery ×1
charsequence ×1
clojure ×1
cyclic ×1
f-string ×1
graph ×1
import ×1
list ×1
pip ×1