标签: pretty-print

如何让Jackson的build()方法完美打印其JSON输出?

我使用Spring,Jersey和Jackson来提供生成JSON的API.

我的@Component有一个@Get方法,它返回Response.ok(entity).build().

输出非常紧凑.如何使输出漂亮/格式化?

spring json pretty-print jersey jackson

16
推荐指数
0
解决办法
3万
查看次数

很好的代码来格式化xml字符串

任何人都有一个现成的函数,它将采用XML字符串并返回正确缩进的字符串?

例如

<XML><TAG1>A</TAG1><TAG2><Tag3></Tag3></TAG2></XML>
Run Code Online (Sandbox Code Playgroud)

并在插入换行符和制表符或空格后返回格式良好的String?

xml delphi text-formatting pretty-print

15
推荐指数
2
解决办法
5983
查看次数

如何将OCaml值打印在顶层之外?

OCaml repl("toplevel")具有丰富的打印功能,适用于任何类型,用户定义或其他类型.是否可以在顶层之外访问此功能,而不必为自己的整个类型集编写一组完全自定义的值打印机?

ocaml pretty-print

15
推荐指数
2
解决办法
4630
查看次数

C#是否有漂亮的打印机/代码格式化程序(作为构建系统的一部分)?

C#是否有漂亮的打印机/代码格式化程序(作为构建系统的一部分)?读作:"生活在Visual Studio之外".对于Java,C++/C,Go来说似乎有很多这样的东西 - 所以C#应该还有一些代码格式化程序存在于IDE之外,这似乎更合理吗?

(我实际上喜欢将格式化程序与StyleCop结合起来,并且让dev在提交之前将其作为进程的一部分运行).

注意:不是语法高亮,如在网页中的代码中.相反,代码美化器或代码漂亮的打印机,它将代码和格式化为样式/标准编码格式...... StyleCop进行样式检查以查看代码是否符合格式.

c# pretty-print

15
推荐指数
5
解决办法
5318
查看次数

Python源格式化器/漂亮的打印机

是否有在线或离线实用程序将格式化/漂亮打印Python源代码?

python pretty-print

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

漂亮的印刷表达尽可能少括号?

我的问题:在没有多余括号的情况下,打印表达式的最简洁方法是什么?


我有lambda表达式的以下表示:

Term ::= Fun(String x, Term t)
      |  App(Term t1, Term t2)
      |  Var(String x)
Run Code Online (Sandbox Code Playgroud)

按惯例App是左关联的,a b c即被解释为(a b) c和函数体尽可能向右伸展,? x. x y即被解释为? x. (x y).

我有一个很好的解析器,但现在我想要一个漂亮的打印机.这是我目前拥有的(伪scala):

term match {
    case Fun(v, t) => "(? %s.%s)".format(v, prettyPrint(t))
    case App(s, t) => "(%s %s)".format(prettyPrint(s), prettyPrint(t))
    case Var(v)    => v
}
Run Code Online (Sandbox Code Playgroud)

上面的打印机总是放置( )表达式(原子变量除外).因此Fun(x, App(Fun(y, x), y))它产生了

(? x.((? y.x) y))
Run Code Online (Sandbox Code Playgroud)

我想拥有

? x.(? y.x) …
Run Code Online (Sandbox Code Playgroud)

redundancy pretty-print

14
推荐指数
2
解决办法
1264
查看次数

NumPy:漂亮的打印表格数据

我想打印NumPy表格数组数据,以便它看起来不错.R和数据库控制台似乎表现出很好的能力.但是,NumPy的表格数组的内置打印看起来像垃圾:

import numpy as np
dat_dtype = {
    'names' : ('column_one', 'col_two', 'column_3'),
    'formats' : ('i', 'd', '|S12')}
dat = np.zeros(4, dat_dtype)
dat['column_one'] = range(4)
dat['col_two'] = 10**(-np.arange(4, dtype='d') - 4)
dat['column_3'] = 'ABCD'
dat['column_3'][2] = 'long string'

print(dat)
# [(0, 0.0001, 'ABCD') (1, 1.0000000000000001e-005, 'ABCD')
#  (2, 9.9999999999999995e-007, 'long string')
#  (3, 9.9999999999999995e-008, 'ABCD')]

print(repr(dat))
# array([(0, 0.0001, 'ABCD'), (1, 1.0000000000000001e-005, 'ABCD'),
#        (2, 9.9999999999999995e-007, 'long string'),
#        (3, 9.9999999999999995e-008, 'ABCD')], 
#       dtype=[('column_one', '<i4'), ('col_two', '<f8'), ('column_3', '|S12')])
Run Code Online (Sandbox Code Playgroud)

我希望看起来更像数据库吐出的东西,例如postgres风格: …

python numpy pretty-print tabular

14
推荐指数
4
解决办法
3万
查看次数

如何在通用遍历解析树的同时访问ANTLR4中的备用标签?

如何在通用遍历解析树的同时访问ANTLR4中的备用标签?或者,是否有任何方法可以复制^ANTLR3 的运算符的功能,因为这样可以解决问题.

我正在尝试为任何符合简单方法的ANTLR4语法编写AST漂亮的打印机(比如用替代标签命名产品).我希望能够打印出更漂亮的一个术语类似3 + 5(int_expression (plus (int_literal 3) (int_literal 5))),或类似的东西,给出类似下面的语法:

int_expression 
    : int_expression '+' int_expression # plus
    | int_expression '-' int_expression # minus
    | raw_int                           # int_literal
    ;
raw_int
    : Int
    ;
Int : [0-9]+ ;
Run Code Online (Sandbox Code Playgroud)

我无法有效地为制作plusminus制作命名,因为将它们拉到自己的制作中会导致工具抱怨规则是相互左递归的.如果我不能把它们拉出来,我怎么能给这些作品命名呢?

注1:+通过将"好"终端(例如,Int上面的)放在特殊制作中(以特殊前缀开头的制作等raw_),我能够在方法论上摆脱论证.然后,我只能打印那些父作品被命名为" raw_......"而终止所有其他作品的终端.这非常适合摆脱+,同时保持35输出.这可以通过!ANTLR3完成.

注意2:我知道我可以编写一个专门的漂亮的打印机或为给定语言的每个产生使用动作,但我想使用ANTLR4来解析和生成各种语言的AST,看起来我应该是能够编写如此简单漂亮的打印机.换句话说,我只关心获得AST,而我宁愿不用每个语法来使用量身定制的漂亮打印机来获取AST.也许我应该回到ANTLR3?

pretty-print abstract-syntax-tree antlr4

14
推荐指数
1
解决办法
944
查看次数

使用杰克逊库轻松打印XML

我正在尝试使用Jackson库通过使用JAXB注释将Java对象序列化为XML.但是,我在打印XML输出时遇到了一个问题.

这是我的示例代码用法:

ObjectMapper mapper = new XmlMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
String xml = mapper.writeValueAsString(person);
Run Code Online (Sandbox Code Playgroud)

而且,我看到了以下异常.这里的问题是Jackson使用Stax2Writer作为XML编写器,而Stax2似乎不支持编写原始字符串(在这种情况下,DefaultPrettyPrinter尝试将"\n"写为原始字符串).

    com.fasterxml.jackson.databind.JsonMappingException: Not implemented (through reference chain: xml.serialization.jackson.dto.Person["name"])
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:232)
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:197)
    at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:187)
    at com.fasterxml.jackson.dataformat.xml.ser.XmlBeanSerializer.serializeFields(XmlBeanSerializer.java:174)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:152)
    at com.fasterxml.jackson.dataformat.xml.ser.XmlSerializerProvider.serializeValue(XmlSerializerProvider.java:92)
    at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:2818)
    at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:2275)
    at xml.serialization.jackson.SerializationTest.main(SerializationTest.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.UnsupportedOperationException: Not implemented
    at org.codehaus.stax2.ri.Stax2WriterAdapter.writeRaw(Stax2WriterAdapter.java:380)
    at org.codehaus.stax2.ri.Stax2WriterAdapter.writeRaw(Stax2WriterAdapter.java:373)
    at com.fasterxml.jackson.dataformat.xml.util.DefaultXmlPrettyPrinter$Lf2SpacesIndenter.writeIndentation(DefaultXmlPrettyPrinter.java:498)
    at com.fasterxml.jackson.dataformat.xml.util.DefaultXmlPrettyPrinter.writeLeafElement(DefaultXmlPrettyPrinter.java:271)
    at com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.writeString(ToXmlGenerator.java:489)
    at com.fasterxml.jackson.databind.ser.std.StringSerializer.serialize(StringSerializer.java:39)
    at com.fasterxml.jackson.databind.ser.std.StringSerializer.serialize(StringSerializer.java:21)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:541)
    at com.fasterxml.jackson.dataformat.xml.ser.XmlBeanSerializer.serializeFields(XmlBeanSerializer.java:161)
    ... 10 more
Run Code Online (Sandbox Code Playgroud)

有关如何解决它的任何想法?

xml pretty-print jackson

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

Python相当打印的列表字典,缩写长列表

我有一个列表字典,列表很长.如何以只显示列表中的几个元素的方式打印它?显然,我可以为此编写一个自定义函数,但有没有可以实现此功能的内置方法或库?例如,在打印大型数据框时,pandas可以很快地打印出来.

这个例子更能说明我的意思:

obj = {'key_1': ['EG8XYD9FVN',
  'S2WARDCVAO',
  'J00YCU55DP',
  'R07BUIF2F7',
  'VGPS1JD0UM',
  'WL3TWSDP8E',
  'LD8QY7DMJ3',
  'J36U3Z9KOQ',
  'KU2FUGYB2U',
  'JF3RQ315BY'],
 'key_2': ['162LO154PM',
  '3ROAV881V2',
  'I4T79LP18J',
  'WBD36EM6QL',
  'DEIODVQU46',
  'KWSJA5WDKQ',
  'WX9SVRFO0G',
  '6UN63WU64G',
  '3Z89U7XM60',
  '167CYON6YN']}
Run Code Online (Sandbox Code Playgroud)

期望的输出:这样的事情:

{'key_1':
    ['EG8XYD9FVN', 'S2WARDCVAO', '...'],
 'key_2':
    ['162LO154PM', '3ROAV881V2', '...']
}
Run Code Online (Sandbox Code Playgroud)

python dictionary list pretty-print

13
推荐指数
3
解决办法
2187
查看次数