Ich versuche eine Antwort von einer API zu erhalten, die ein JSON-Objekt zurückmeldet und dieses in eine Markdown-Ausgabe konvertiert, um sie in einem besser lesbaren Format darzustellen. Ich versuche, py- pandoc dazu zu benutzen und ich habe gerade viel Zeit herauszufinden, wie ich es zum Laufen bringen kann.Wie konvertiert man JSON-Objekt mit pypandoc in markdown, ohne in Datei zu schreiben?
Ich würde erwarten, dass das Folgende auf der Grundlage der Dokumentation von Pandoc funktioniert, aber die pypandoc Dokumente und Beispiele sind knapp.
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'
Wenn jemand einen besseren Weg weiß dies zu konvertieren, ohne es auf eine Datei zu schreiben wäre ich sehr dankbar, wenn Sie es geteilt.
zum Schreiben und Lesen von Dateiversion:
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")
pypandoc ein Wrapper für pandoc seinen Zugriff auf alle Funktionen von pandoc haben sollte, die deutlich zeigen, dass ist in der Lage, die Umwandlung hier: http://pandoc.org/index.html kann ich zusätzlich erhalten es zu konvertieren, wenn ich die info in eine datei schreibe, wandle die datei um und lese sie in den speicher zurück, allerdings sollte ich das im gedächtnis machen können ich kann einfach nicht herausfinden, wie. –
https: //pypi.python.org/pypi/pyandoc/zeigt Formate zur Verfügung: asciidoc Beamer commonmark Kontext docbook doc- x dokuwiki dzslides epub EPUB3 fb2 Schellfisch html html5 ICML json (pandoc AST) latex man markdown markdown_github markdown_mmd markdown_phpextra markdown_strict mediawiki nativen odt OpenDocument- opml org pdf Ebene revealjs ersten rtf s5, slideous slidy texinfo Textil und pandoc zeigt es hier http://pandoc.org/ diagram.jpg –
Sieht so aus, als hätte ich beim Schreiben in eine Datei nicht besonders auf die Ausgabe geachtet. Es ändert die Daten, aber es wird nicht zum tatsächlichen Abschlag, selbst wenn es in eine Datei geschrieben wird. Wenn ich erraten müsste, dass es vielleicht in Pandav AST umgewandelt wurde? –