如何使用PYPANDOC将JSON对象转换为Markdown,而无需写入文件



我试图从API中获取响应,该响应报告了JSON对象并将其转换为降级输出,以更可读的格式显示它。我正在尝试使用Pypandoc来做到这一点,并且我有一段时间弄清楚如何使它起作用。

我希望以下根据Pandoc的文档来工作,但Pypandoc文档和示例很少。

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:ProgramDataAnaconda3libsite-packagespypandoc__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:ProgramDataAnaconda3libsite-packagespypandoc__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:ProgramDataAnaconda3libsite-packagespypandocpy3compat.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:ProgramDataAnaconda3libsite-packagespypandocpy3compat.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'

如果有人知道一种更好的方法将其转换而不写入文件,如果您分享了它,我将非常感谢。

从文件版本写入并阅读:

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")

注释:我应该能够在内存中执行此操作

请显示执行此操作的代码 to/trof File
它应该能够使用StringIO对象在内存中进行操作。

results是类型dict,使用json.dumps(...更改为str应该与从文件中读取:

print(pypandoc.convert_text(json.dumps(results), 'json', 'md'))

问题:我希望以下基于Pandoc的文档来工作 ...以更可读的格式将其转换为...

您必须自己转换为mdHTML
这与以下示例相同:

使用Python和Xtopdf

将JSON转换为PDF

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

相关内容

  • 没有找到相关文章

最新更新