标签: pretty-print

如果我想使用漂亮的打印库来添加颜色,如何“刷新”终端中的最后一行输出?

有一个程序通过重复覆盖stderr. 操作如下:

  • 有一个状态 monad 会记住打印的最后一行的长度。
  • 当它想s用另一行覆盖一行时s',它s'用空格s填充,直到它至少与“回车”字符一样长:

    n <- gets lastLineLength
    let s'Padded | 0 < n     = '\r': s' ++ replicate (n - length s') ' '
                 | otherwise = s'
    hPutStr stderr s'Padded
    
    Run Code Online (Sandbox Code Playgroud)

这工作得很好。(虽然我个人没有在通常的 Linux 终端以外的情况下测试过它。)

我着手改进这个程序,用String一种Doc类型来代替普通的,ansi-wl-pprint这样我就可以用颜色来绘制文本,就像最近的 GHC 运动一样。像这样的库可能有点矫枉过正,因为我只需要一次输出几行,而且没有任何缩进,但我想尝试一下它的抽象着色设施。但是,我认为这个库(或任何漂亮的打印库)不会具有旨在擦除以前打印的Docs 的功能。

我想到的一种解决方案是Doc将 a渲染为 aString并测量其长度。但是,我将不得不为颜色代码打折;此外,这总体上是对库提供的抽象的侵入:具体来说,我将不得不依赖这样一个假设,即我手动执行的渲染将与hPutDoc.

我是否应该完全放弃该库并继续处理Strings,手动输入 ANSI 转义序列和回车?有没有更好的方法来覆盖以前的输出?我欢迎任何建议。

terminal haskell pretty-print

4
推荐指数
1
解决办法
388
查看次数

JSON 格式,来自文件或变量

我有一个 PS 脚本,它在变量 ant 中获取 JSON,然后将其保存在文件中。

不幸的是,它在一个字符串中获取值,如下所示:

{   "persistentdataapi": "https://somevalue.azurewebsites.net/",   "collectioncountapi": "https://anothervalue.azurewebsites.net/",   "eventserviceapi": "https://thirdvalue.azurewebsites.net/",   "securityserviceapi": "https://fourthvalue.azurewebsites.net/" }
Run Code Online (Sandbox Code Playgroud)

有没有办法通过某种(最好是 PS)JSON 格式来处理这个值,以获得这个:

{
"persistentdataapi": "https://somevalue.azurewebsites.net/",
"collectioncountapi": "https://anothervalue.azurewebsites.net/",
"eventserviceapi": "https://thirdvalue.azurewebsites.net/",
"securityserviceapi": "https://fourthvalue.azurewebsites.net/",
}
Run Code Online (Sandbox Code Playgroud)

在 Jenkins 中获取价值的代码:

Import-Module "C:\Program Files\WindowsPowerShell\Modules\Octopus-Cmdlets\0.4.4\Octopus-Cmdlets.psd1"

connect-octoserver http://internal-Octopus.azure.com:8082 API-123456789012345678
$raw = (Get-OctoVariable var.Portal.Web DataAPIJson | Where-Object { $_.Environment -eq "QA" } )

$raw.Value | Out-File "$env:WORKSPACE\portal\var.Portal.Web\dataapi.json"
Run Code Online (Sandbox Code Playgroud)

powershell json pretty-print

4
推荐指数
1
解决办法
2466
查看次数

python:traceback.print_stack():如何对输出进行着色和重新格式化

我想查看代码直到特定点的完整跟踪

所以我这样做

...
import traceback
traceback.print_stack()
...
Run Code Online (Sandbox Code Playgroud)

然后就会显示

  File ".venv/lib/python3.7/site-packages/django/db/models/query.py", line 144, in __iter__
    return compiler.results_iter(tuple_expected=True, chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File ".venv/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1052, in results_iter
    results = self.execute_sql(MULTI, chunked_fetch=chunked_fetch, chunk_size=chunk_size)
  File ".venv/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1100, in execute_sql
    cursor.execute(sql, params)
  File ".venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 110, in execute
    extra={'duration': duration, 'sql': sql, 'params': params}
  File "/usr/lib64/python3.7/logging/__init__.py", line 1371, in debug
    self._log(DEBUG, msg, args, **kwargs)
  File "/usr/lib64/python3.7/logging/__init__.py", line 1519, in _log
    self.handle(record)
  File "/usr/lib64/python3.7/logging/__init__.py", line 1528, in handle
    if (not self.disabled) and self.filter(record):
  File "/usr/lib64/python3.7/logging/__init__.py", line …
Run Code Online (Sandbox Code Playgroud)

python pretty-print traceback

4
推荐指数
1
解决办法
2797
查看次数

有没有一种简单的方法可以在 vim 中反转 json 的漂亮打印?

当我出于机器学习目的标记图像或文本时,我经常以某种格式导出结果json。然后,我可以打开它vim并使用简单的漂亮打印

:execute '%!python -m json.tool'
Run Code Online (Sandbox Code Playgroud)

我经常添加| w它自动将更改写入文件。

有没有办法扭转这个过程?为了压缩json,所以没有多余的字符?

输入示例:

{
    "name": "John",
    "email": "john@smith.co.uk"
}
Run Code Online (Sandbox Code Playgroud)

期望的输出:

{"name":"John","email":"john@smith.co.uk"}
Run Code Online (Sandbox Code Playgroud)

我会对 Vimish、Pythonish 和 Bashish 解决方案感到满意。

python vim bash json pretty-print

4
推荐指数
1
解决办法
1916
查看次数

kafka控制台消费者漂亮的打印json

如何将 Kafka 控制台消费者的响应漂亮地打印为 JSON。我已经尝试过这个,但它不起作用。

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic indexing-v1 
--from-beginning | python -m json.tool
Run Code Online (Sandbox Code Playgroud)

json pretty-print apache-kafka kafka-consumer-api

4
推荐指数
1
解决办法
4568
查看次数

漂亮的打印数据类更漂亮

Python数据类实例还包括一个字符串表示方法,但是当类具有多个字段和/或更长的字段值时,它的结果对于漂亮的打印目的来说并不足够。

基本上,我正在寻找一种方法来自定义默认的数据类字符串表示例程,或者寻找一种理解数据类并更漂亮地打印它们的漂亮打印机。

所以,这只是我想到的一个小自定义:在每个字段之后添加一个换行符,同时在第一个字段之后缩进行。

例如,代替

x = InventoryItem('foo', 23)
print(x) # =>
InventoryItem(name='foo', unit_price=23, quantity_on_hand=0)
Run Code Online (Sandbox Code Playgroud)

我想得到这样的字符串表示:

x = InventoryItem('foo', 23)
print(x) # =>
InventoryItem(
    name='foo',
    unit_price=23,
    quantity_on_hand=0
)
Run Code Online (Sandbox Code Playgroud)

或者类似的。也许漂亮的打印机可以变得更漂亮,例如对齐=分配字符或类似的东西。

当然,它也应该以递归方式工作,例如,也是数据类的字段应该缩进更多。

python pretty-print python-dataclasses

4
推荐指数
4
解决办法
1037
查看次数

正则表达式缩进XML文件

是否可以编写一个REGEX(搜索替换),当在XML字符串上运行时,输出的XML字符串会很好地缩进?

如果是这样的话REGEX :)

regex xml pretty-print

3
推荐指数
2
解决办法
4680
查看次数

Haskell - 解释一个数字

我有一个号码9877342931235.使用Haskell,我需要将其显示为:

987-734293-123-5

我试过穿插列表,但当然在每个数字之间加上' - '.我该怎么做才能得出实际结果呢?

haskell pretty-print

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

Visual Studio ASP.NET/HTML重新格式化功能 - 它是否存在?

是否Visual Studio中有能力,还是有一个VS插件,这将重新ASP.NET和HTML标记(即执行漂亮的打印).具体而言,我希望它把所有的属性或属性按字母顺序为每个标签,可能有一些例外的是,用户可以指定,说在配置文件中.此外,根据用户的规范,每个属性或属性可以选择放在单独的行上.

例如,请考虑以下事项:

<asp:TextBox ID="txtPlanStart" runat="server" ToolTip="start date" Columns="8">
Run Code Online (Sandbox Code Playgroud)

重新格式化的版本将是:

<asp:TextBox ID="txtPlanStart" runat="server" 
     Columns="8"
     ToolTip="start date" />
Run Code Online (Sandbox Code Playgroud)

请注意,重新格式化的版本不是严格按字母顺序排列,也不是单独排列,因为ID和runat是第一位的.同样,重新格式化的例外可以由用户指定.

如果VS中没有集成此功能,是否还有其他实用程序?

html asp.net plugins pretty-print visual-studio

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

使用Swift 3的漂亮打印XML

使用Swift 2.2,我曾经像这样美化XML:

let detxTag = NSXMLElement(name: "detx")
let xml = NSXMLDocument(rootElement: detxTag)

// ...

let data = xml.XMLDataWithOptions(NSXMLNodePrettyPrint | NSXMLNodeCompactEmptyElement)
Run Code Online (Sandbox Code Playgroud)

不幸的是,使用此代码不再使用Swift 3(由Xcode 8自动转换):

let detxTag = XMLElement(name: "detx")
let xml = XMLDocument(rootElement: detxTag)

// ...

let data = xml.xmlData(withOptions: NSXMLNodePrettyPrint)
Run Code Online (Sandbox Code Playgroud)

它会产生以下错误:

Use of unresolved identifier 'NSXMLNodePrettyPrint'
Run Code Online (Sandbox Code Playgroud)

似乎进/出选项已经改变但是如何使用它并不是很清楚:https://developer.apple.com/reference/foundation/xmldocument/input_and_output_options

任何的想法?

xml pretty-print swift swift3

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