相关疑难解决方法(0)

如何在shell脚本中打印JSON?

是否有(Unix)shell脚本以人类可读的形式格式化JSON?

基本上,我希望它改变以下内容:

{ "foo": "lorem", "bar": "ipsum" }
Run Code Online (Sandbox Code Playgroud)

...进入这样的事情:

{
    "foo": "lorem",
    "bar": "ipsum"
}
Run Code Online (Sandbox Code Playgroud)

unix format command-line json pretty-print

2905
推荐指数
46
解决办法
116万
查看次数

UnicodeEncodeError:'ascii'编解码器无法对位置20中的字符u'\ xa0'进行编码:序数不在范围内(128)

我在处理从不同网页(在不同网站上)获取的文本中的unicode字符时遇到问题.我正在使用BeautifulSoup.

问题是错误并不总是可重现的; 它有时适用于某些页面,有时候,它会通过抛出一个UnicodeEncodeError.我已经尝试了几乎所有我能想到的东西,但是我没有找到任何可以持续工作的东西而不会抛出某种与Unicode相关的错误.

导致问题的代码部分之一如下所示:

agent_telno = agent.find('div', 'agent_contact_number')
agent_telno = '' if agent_telno is None else agent_telno.contents[0]
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
Run Code Online (Sandbox Code Playgroud)

以下是运行上述代码段时在SOME字符串上生成的堆栈跟踪:

Traceback (most recent call last):
  File "foobar.py", line 792, in <module>
    p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我怀疑这是因为某些页面(或更具体地说,来自某些站点的页面)可能被编码,而其他页面可能是未编码的.所有这些网站都位于英国,并提供供英国消费的数据 - 因此,没有与内部化或处理用英语以外的任何文字处理的文本相关的问题.

有没有人有任何想法如何解决这个问题,以便我可以一致地解决这个问题?

python unicode beautifulsoup python-2.x python-unicode

1222
推荐指数
24
解决办法
156万
查看次数

命令行HTML漂亮的打印机:使凌乱的HTML可读

我正在寻找满足以下要求的HTML漂亮打印机的建议:

  • 将HTML作为输入,然后输出格式正确/正确缩进但给定输入HTML的"图形等效"版本.
  • 必须支持命令行操作.
  • 必须是开源的并在Linux下运行.

html tidy pretty-print

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

在属性之间添加换行符

我有一个XML文档,该文档通过XSLT发送后,在XML属性之前不再有换行符。所以举个例子

<myoutertag one="a"
            two="b"
            three="c">
    <myinnertag four="d"
                five="e"/>
</myoutertag>
Run Code Online (Sandbox Code Playgroud)

会成为

<myoutertag one="a" two="b" three="c">
    <myinnertag four="d" five="e"/>
</myoutertag>
Run Code Online (Sandbox Code Playgroud)

这当然是完全有效的XML,但更难读取,特别是在有许多长属性值的情况下。根据我的阅读,XSLT无法保留这些换行符,因为XSLT处理器未传递此类不重要的信息。

因此,我现在正在寻找的是基于命令行的漂亮打印机(可在Linux中使用),理想情况下,它只会更改文档,因为它会在属性之间添加换行符。只要它更容易阅读,它是否在第一个属性之前添加一个就与我无关紧要。

到目前为止,我尝试失败的内容:

我正在使用输入文件

<?xml version="1.0" encoding="UTF-8"?>

<myoutertag one="a" two="b" three="c">
    <myinnertag four="d" five="e"/>
</myoutertag>
Run Code Online (Sandbox Code Playgroud)

xmllint-格式

我尝试了两者xmllint --format test.xmlcat test.xml | xmllint --format -结果相同:

<?xml version="1.0" encoding="UTF-8"?>
<myoutertag one="a" two="b" three="c">
  <myinnertag four="d" five="e"/>
</myoutertag>
Run Code Online (Sandbox Code Playgroud)

因此,更改为:

  • xml磁偏角消失后的换行符
  • 的缩进<myinnertag>从四个空格减少到两个空格

我都不想改变。这正在使用libxml版本20706。

xml_pp -s

我试过的风格nonensgmlsniceindentedrecordrecord_c。唯一接近的 …

xml linux command-line newline pretty-print

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

Curl 请求:使用curl 请求的响应格式不正确(xml)

我正在使用curl从远程将xml加载为字符串,如下所示:

$ curl -i -H "Accept: application/xml"  -X GET "URL Here"
Run Code Online (Sandbox Code Playgroud)

但响应不是 xml 格式,因此不易阅读。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><RunConfig <PipeLineXmlVersion>1.0</PipeLineXmlVersion><DateTime>20161128_160859</DateTime><Analysis><Lane>1</Lane><PipeLine>run_multiplexed_auto_start_v4.0.sh</PipeLine><Version>4.0</Version><Mismatch>1</Mismatch><MergeLane>0</MergeLane<Version>4.0</Version></Analysis></RunConfig>
Run Code Online (Sandbox Code Playgroud)

当我使用一些 REST 客户端尝试相同的 API 时,我可以看到正确的 xml。

正如我搜索的那样,接受标头应该可以工作,但不幸的是在我的情况下不行。

请在这件事上给予我帮助。

谢谢。

shell command-line curl

0
推荐指数
1
解决办法
6474
查看次数