首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不写入文件的情况下使用pypandoc将JSON对象转换为减价?

如何在不写入文件的情况下使用pypandoc将JSON对象转换为减价?
EN

Stack Overflow用户
提问于 2017-06-26 21:29:57
回答 1查看 7.8K关注 0票数 2

我试图从一个API获得一个响应,该API报告一个JSON对象,并将其转换为一个标记输出,以更易读的格式表示它。我正在尝试使用pypandoc来完成这个任务,并且我有很长的时间来研究如何让它工作。

我希望下面的工作基于pandoc的文档,但是pypandoc文档和示例很少。

代码语言:javascript
复制
from ipwhois import IPWhois

obj = IPWhois('74.125.225.229')
results = obj.lookup_rdap(depth=1)
print(pypandoc.convert_text(results, 'json', 'md'))



---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-6-6a5e630f5495> in <module>()
      4 obj = IPWhois('74.125.225.229')
      5 results = obj.lookup_rdap(depth=1)
----> 6 print(pypandoc.convert_text(results, 'json', 'md'))

C:\ProgramData\Anaconda3\lib\site-packages\pypandoc\__init__.py in convert_text(source, to, format, extra_args, encoding, outputfile, filters)
    101     source = _as_unicode(source, encoding)
    102     return _convert_input(source, format, 'string', to, extra_args=extra_args,
--> 103                           outputfile=outputfile, filters=filters)
    104 
    105 

C:\ProgramData\Anaconda3\lib\site-packages\pypandoc\__init__.py in _convert_input(source, format, input_type, to, extra_args, outputfile, filters)
    303 
    304     try:
--> 305         source = cast_bytes(source, encoding='utf-8')
    306     except (UnicodeDecodeError, UnicodeEncodeError):
    307         # assume that it is already a utf-8 encoded string

C:\ProgramData\Anaconda3\lib\site-packages\pypandoc\py3compat.py in cast_bytes(s, encoding)
     37     # bytes == str on py2.7 -> always encode on py2
     38     if not isinstance(s, bytes):
---> 39         return _encode(s, encoding)
     40     return s
     41 

C:\ProgramData\Anaconda3\lib\site-packages\pypandoc\py3compat.py in _encode(u, encoding)
     25 def _encode(u, encoding=None):
     26     encoding = encoding or _DEFAULT_ENCODING
---> 27     return u.encode(encoding)
     28 
     29 

AttributeError: 'dict' object has no attribute 'encode'

如果有人知道一个更好的方法来转换它,而不把它写成一个文件,我会非常感激你分享它。

写入和读取文件版本:

代码语言:javascript
复制
from ipwhois import IPWhois
from pprint import pprint
import json, pypandoc

obj = IPWhois('74.125.225.229')
results = obj.lookup_rdap(depth=1)
pprint(results)
with open('data.json', 'w') as outfile:
    json.dump(results, outfile)
output = pypandoc.convert_file('data.json', to='json', format='md',outputfile="data.md")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-27 13:24:59

注释:我应该能够在内存中这样做

请在文件中显示您的代码

它应该能够使用StringIO对象在内存中执行此操作。

resultsdict类型,使用json.dumps(...更改为str应与从文件中读取相同:

代码语言:javascript
复制
print(pypandoc.convert_text(json.dumps(results), 'json', 'md'))

问题:我希望下面的工作基于pandoc的文档 ..。把它转换成..。以一种更易读的格式。

您必须自己将其转换为mdHTML

这与下面的示例是相同的:

用Python和xtopdf将JSON转换为PDF 此菜谱显示了使用Python和xtopdf将JSON输入转换为PDF输出所需的基本步骤, PDF创建工具包。xtopdf本身是用Python编写的,并在内部使用ReportLab工具包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44768989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档