我喜欢Python中的pprint模块.我经常使用它进行测试和调试.我经常使用width选项来确保输出在我的终端窗口中很好地适应.
它一直运行良好,直到他们在Python 2.7中添加了新的有序字典类型(我非常喜欢的另一个很酷的功能).如果我试着漂亮地打印一个有序的字典,它就不能很好地显示出来.而不是将每个键值对放在它自己的行上,整个事物显示在一条长行上,它包含很多次并且难以阅读.
这里有没有人有办法让它打印得很好,就像旧的无序词典一样?如果我花了足够的时间,我可能会想出一些东西,可能使用PrettyPrinter.format方法,但我想知道这里是否有人知道解决方案.
更新:我为此提交了一份错误报告.您可以在http://bugs.python.org/issue10592上看到它.
我想使用pprint的输出来显示复杂的数据结构,但我想使用日志模块而不是stdout输出它.
ds = [{'hello': 'there'}]
logging.debug( pprint.pprint(ds) ) # outputs as STDOUT
Run Code Online (Sandbox Code Playgroud) 我正试图获得一本字典的印刷品,但我没有运气:
>>> import pprint
>>> a = {'first': 123, 'second': 456, 'third': {1:1, 2:2}}
>>> pprint.pprint(a)
{'first': 123, 'second': 456, 'third': {1: 1, 2: 2}}
Run Code Online (Sandbox Code Playgroud)
我希望输出在多行上,如下所示:
{'first': 123,
'second': 456,
'third': {1: 1,
2: 2}
}
Run Code Online (Sandbox Code Playgroud)
可以pprint
这样吗?如果没有,那么哪个模块呢?我正在使用Python 2.7.3.
我试图pprint
从pprint
,但其产量只有一条线路,也没有多输出和无压痕.
Noob问题,使用Win7 64位,Clojure 1.2.0,Java 1.6.0_22
当我从命令行启动clojure时,pprint函数很容易获得.
user=> pprint
#<pprint$pprint clojure.pprint$pprint@16dfa45>
user=> (pprint "hi")
"hi"
nil
user=>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试从文件中使用pprint时,我收到错误.无论是否使用命名空间(ns ...:require ...)都会发生这种情况,如pprint文档中所示
clj文件如下:
(ns whatevah
(:require clojure.pprint))
(pprint "hi")
Run Code Online (Sandbox Code Playgroud)
错误如下:
C:\Users\mischw\code\Clojure>java -cp ";c:\users\mischw\code\clojure\classes\*;c:\Program Files (x86)\Java\SWT;c:\users\mischw\code\clojure\classes\bookcode\*" clojure.main swinglearn.clj
Exception in thread "main" java.lang.Exception: Unable to resolve symbol: pprint in this context (swinglearn.clj:14)
... 21 more
Output completed (0 sec consumed) - Normal Termination
Run Code Online (Sandbox Code Playgroud)
我不明白这里发生了什么的一般想法.为什么一个工作而另一个工作?这与名称空间有关吗?类路径?其他一些简单的修复?显然noob问题,但我发现这发生在一堆例子中......即使导入/使用/ require/include它们似乎很简单,我也无法运行它们.
我有这个代码
import json
from pprint import pprint
json_data=open('bookmarks.json')
jdata = json.load(json_data)
pprint (jdata)
json_data.close()
Run Code Online (Sandbox Code Playgroud)
我该如何搜索它u'uri': u'http:
?
pprint
的文档有点像砖墙.如果你打印一张地图,它会出现在一行上,如下所示:{:a "b", :b "c", :d "e"}
.相反,我想像这样打印,可选择使用逗号:
{:a "b"
:b "c"
:d "e"}
Run Code Online (Sandbox Code Playgroud)
如何用pprint做到这一点?
如果有任何关于漂亮印刷JSON的人可以帮助我,我将非常感激!
我想将一个复杂的python字符串转换为JSON格式,使用下面的函数将JSON字符串移动到一个文件:
with open('data.txt', 'wt') as out:
pprint(string, stream=out)
Run Code Online (Sandbox Code Playgroud)
问题是我认为方括号的语法错误,因为这对我来说是一个新主题,我无法弄清楚如何解决这个问题.我需要的JSON格式是这样的:
{
cols:[{id: 'Time', "label":"Time","type": "datetime"},
{id: 'Time', "label":"Latency","type":"number"}],
rows:[{c: [{v: %s}, {v: %s}]},
{c: [{v: %s}, {v: %s}]},
{c: [{v: %s}, {v: %s}]},
{c: [{v: %s}, {v: %s}]}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在关注Google Visualization API,您可能对它很熟悉,但我需要动态图表.上面的代码是API创建图形所需的格式,因此我正在弄清楚如何将我的数据从MYSQL转换为这种格式,因此图形可以读取和显示.我想到的方法是定期更新包含所需JSON格式的文件,这就是%s存在的原因,但是MartijnPeters认为这是无效的.
有没有人知道我能做到的最简单的方法,还是你能指出任何有用的材料?谢谢!!
我有一个Python脚本来处理包含报告使用信息的.txt文件.我想找到一种方法来使用pprint的pprint(vars(object))函数干净地打印对象的属性.
该脚本读取文件并创建Report类的实例.这是班级.
class Report(object):
def __init__(self, line, headers):
self.date_added=get_column_by_header(line,headers,"Date Added")
self.user=get_column_by_header(line,headers,"Login ID")
self.report=get_column_by_header(line,headers,"Search/Report Description")
self.price=get_column_by_header(line,headers,"Price")
self.retail_price=get_column_by_header(line,headers,"Retail Price")
def __str__(self):
from pprint import pprint
return str(pprint(vars(self)))
Run Code Online (Sandbox Code Playgroud)
我希望能够干净地打印报告的实例a-la-pprint.
for i,line in enumerate(open(path+file_1,'r')):
line=line.strip().split("|")
if i==0:
headers=line
if i==1:
record=Report(line,headers)
print record
Run Code Online (Sandbox Code Playgroud)
我打电话的时候
print record
Run Code Online (Sandbox Code Playgroud)
对于单个Report实例,这是我在shell中得到的.
{'date_added': '1/3/2012 14:06',
'price': '0',
'report': 'some_report',
'retail_price': '0.25',
'user': 'some_username'}
None
Run Code Online (Sandbox Code Playgroud)
我的问题是双重的.
首先,这是一种干净地打印对象属性的好/期望方式吗?有或没有pprint有更好的方法吗?
第二,为什么呢
None
Run Code Online (Sandbox Code Playgroud)
最后打印到shell?我很困惑那来自哪里.
谢谢你的任何提示.
如果我使用打印字典pprint
,它总是在单引号('
)周围包装字符串:
>>> from pprint import pprint
>>> pprint({'AAA': 1, 'BBB': 2, 'CCC': 3})
{'AAA': 1, 'BBB': 2, 'CCC': 3}
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉pprint
使用双引号("
)?我想有以下行为:
>>> from pprint import pprint
>>> pprint({'AAA': 1, 'BBB': 2, 'CCC': 3})
{"AAA": 1, "BBB": 2, "CCC": 3}
Run Code Online (Sandbox Code Playgroud) pprint ×10
python ×8
string ×3
clojure ×2
json ×2
pretty-print ×2
python-2.7 ×2
classpath ×1
dictionary ×1
grep ×1
logging ×1
namedtuple ×1
namespaces ×1