2017-06-26 7 views
1

私は、JSONオブジェクトを報告し戻すAPIからの応答を取得しようとしています。これをマークダウン出力に変換して、よりわかりやすい形式で提示します。私はこれを行うためにpypandocを使用しようとしており、それを動作させる方法を考え出す時間が非常にあります。JSONオブジェクトをファイルに書き込まずにpypandocを使ってmarkdownに変換するにはどうすればいいですか?

私はpandocのドキュメントに基づいて次のように動作することを期待していますが、pandandocのドキュメントと例はほとんどありません。

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' 

誰もがあなたがそれを共有している場合、私は非常に感謝だろうファイルにそれを記述することなく、これを変換するためのより良い方法を知っている場合。

への書き込みやファイルバージョンからの読み取り:

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

答えて

0

コメント:私はメモリに

これを行うことができるはずあなたのコードがに/からそれをやって見せて下さいファイル
StringIOオブジェクトを使用してメモリ内で実行できるはずです。

resultsjson.dumps(...を使用してstrへの変更は、ファイルからの読み込みと同じである必要があり、タイプdictは次のとおりです。

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

質問:私は次のように基づいて動作するように期待しますpandocからの文書
...それを...より読みやすい形式に変換してください。

あなたはどちらかmdまたはHTMLに、あなた自身でそれを変換する必要があります。
これは、次の例と同じ努力です:

Convert JSON to PDF with Python and xtopdf

このレシピは、Pythonとxtopdf、
PDF作成ツールキットを使用してPDF出力にJSON入力を変換するために必要な基本的な手順を示します。 xtopdf自体はPythonで書かれており、内部的にReportLabツールキットを使用します。 pandocのラッパーであること

+0

pypandocは明らかにそれがあることを示しpandocのすべての機能へのアクセスを持っている必要があり、ここでの変換が可能である:http://pandoc.org/index.html 私はさらに取得することができます私は情報をファイルに書き出し、ファイルを変換してメモリに読み込んだり変換することができますが、メモリでこれを行うことができるはずです。ちょうどその方法はわかりません。 –

+0

https://pypi.python。ORG /は、PyPI/pyandoc /示す利用可能 フォーマット: asciidoc ビーマー commonmark コンテキスト のDocBook DOC- X DokuWikiの dzslides EPUB EPUB3 FB2 ハドック HTML HTML5 ICML JSON(pandocのAST) ラテックス 男性 マークダウン markdown_github markdown_mmd markdown_phpextra markdown_strict MediaWikiの ネイティブ OpenDocumentの ODT OPML 組織 PDF 平野 revealjs 最初 RTF S5、 slideous slidy テキスタイル のtexinfoとpandocはここ それを示してhttp://pandoc.org/ diagram.jpg –

+0

ファイルに書き込むときに、出力に大きな注意を払っていないように見えます。それはデータを修正していますが、それをファイルに書き込んでも実際のマークダウンには向いていません。多分、もし私がpandoc ASTに変換されたと推測しなければならなかったら? –

関連する問題