Analysieren Sie die Researchmap-API mit Python und erstellen Sie automatisch eine Word-Datei für die Leistungsliste

Liebe Forscher, vielen Dank für Ihre harte Arbeit heute. Es war umständlich, die in der Forschungskarte eingegebenen Erfolge zu kopieren, daher habe ich API analysiert. Gehen wir so weit, eine Word-Datei aus Python zu erstellen.

Umgebung

Installieren Sie python-docx

Bitte sehen Sie hier. Aber es ist eine Zeile:

bash


pip install python-docx

JSON-Analyse

Ich bin eine schwache JSON-Person. Was sind also "@ id" und "@ type"? !! ?? !! Ich habe es mit Tränen gemacht. Bitte lassen Sie mich wissen, ob es eine effizientere Methode gibt. (Übrigens verstehe ich den Umfang des Wortes "Parse" nicht wirklich. Ich denke, es bezieht sich auf den Punkt, an dem Sie den JSON erhalten und die erforderlichen Informationen abrufen, aber sagen Sie mir bitte, wenn Sie einen Fehler machen. )

Holen Sie sich JSON

Ich habe auf [hier] verwiesen (https://qiita.com/bowtin/items/4dcab3389c892baba1a5).

python


import requests
import json

url = "https://api.researchmap.jp/kage"
response = requests.get(url)
jsonData = response.json()

Sie können solche Daten erhalten. (Als ich die print-Anweisung verwendet habe, wurde sie ohne Zeilenumbrüche fest geschrieben, daher habe ich sie nicht verwendet.) スクリーンショット 2020-11-17 0.20.40.png

Extrahieren Sie die erforderlichen Daten aus JSON

Identifizieren des Speicherorts von Leistungsdaten

Ich bin eine schwache JSON-Person, also scrolle ich durch das angezeigte JSON und sehe mir die Struktur genauer an. Es scheint, dass Leistungsdaten in dem Teil namens "@ graph" gespeichert sind. スクリーンショット 2020-11-17 0.24.05.png

Lassen Sie uns einige der Elemente von @ graph anzeigen.

python


for i in range(len(jsonData['@graph'])):
    print(i)
    print(jsonData['@graph'][i]['@type'])

Ausgabeergebnis


0
research_interests
1
research_areas
2
research_experience
3
published_papers
4
books_etc
5
misc
6
presentations
7
awards
8
research_projects
9
education
10
teaching_experience
11
committee_memberships

Leistungsdaten sind darin enthalten. Extrahieren wir die veröffentlichten Papiere von Element 3.

Zeigen Sie Published_Papers wie eine Leistungsliste an

Ich konnte es mit dem folgenden Skript so anzeigen.

python


for i in range(len(jsonData['@graph'][3]['items'])):
    author_list = []
    authors = jsonData['@graph'][3]['items'][i]['authors']['en']
    title = jsonData['@graph'][3]['items'][i]['paper_title']['en']
    journal = jsonData['@graph'][3]['items'][i]['publication_name']['en']
    date =  jsonData['@graph'][3]['items'][i]['publication_date']
    vol = jsonData['@graph'][3]['items'][i]['volume']
    doi = jsonData['@graph'][3]['items'][i]['identifiers']['doi'][0]
    
    #Ordnen Sie das Aussehen des Autors
    for j in range(len(authors)):
        author = ''.join(authors[j].values())
        author_list.append(author)
    
    print(', '.join(author_list))
    print(title)
    print(journal, vol, date)
    print('doi:', doi)
    print('')

スクリーンショット 2020-11-17 0.34.01.png Sie können dies in eine Word-Datei kopieren, aber es ist eine große Sache. Lassen Sie uns also unser Bestes geben.

In Word-Datei schreiben

Liste mit Nummern in Python-Docx

Ich möchte eine Liste von Erfolgen mit Zahlen erstellen. Lassen Sie uns zunächst das Schreiben der Liste testen. Ich habe auf [hier] verwiesen (https://stackoverflow.com/questions/51829366/bullet-lists-in-python-docx).

python


from docx import Document

doc = Document()
docx_file = 'test.docx'

p0 = doc.add_paragraph('Item 1', style='List Number')
p1 = doc.add_paragraph('Item 2', style='List Number')

doc.save(docx_file)

Eine Word-Datei wurde erstellt und die Liste wurde geschrieben. スクリーンショット 2020-11-19 21.58.56.png

Formatieren Sie die Leistungsdaten zum Schreiben

Eine kleine Änderung gegenüber der obigen Druckanweisung.

python


#Liste zum Speichern aller Papierdaten
papers = []

for i in range(len(jsonData['@graph'][3]['items'])):
    author_list = []
    authors = jsonData['@graph'][3]['items'][i]['authors']['en']
    title = jsonData['@graph'][3]['items'][i]['paper_title']['en']
    journal = jsonData['@graph'][3]['items'][i]['publication_name']['en']
    date =  jsonData['@graph'][3]['items'][i]['publication_date']
    vol = jsonData['@graph'][3]['items'][i]['volume']
    doi = jsonData['@graph'][3]['items'][i]['identifiers']['doi'][0]
    
    #Ordnen Sie das Aussehen des Autors
    for j in range(len(authors)):
        author = ''.join(authors[j].values())
        author_list.append(author)
    
    #Formatieren Sie das Papier und speichern Sie es in der Liste
    paper = [', '.join(author_list), title, ', '.join([journal, vol, date]), ' '.join(['doi:', doi])]
    papers.append('\n'.join(paper))

スクリーンショット 2020-11-19 22.13.05.png Schreiben Sie die Liste "Papiere" in Word.

Daten in eine Word-Datei schreiben

Ich habe auf hier verwiesen, um Überschriften hinzuzufügen.

python


doc = Document()
docx_file = 'publication.docx'

#Titel
heading = doc.add_heading('Forschungsergebnisse', level=1)
subheading = doc.add_heading('Original Papier', level=2)

#Liste der Papiere
for paper in papers:
    p = doc.add_paragraph(paper, style='List Number')

doc.save(docx_file)

スクリーンショット 2020-11-19 22.21.11.png Daten wurden in die Word-Datei geschrieben! Der Rest ist nur, um das schöne Aussehen zu arrangieren. Lassen Sie uns beim Betrachten von hier vorerst alle Schriftfarben schwarz machen.

python


from docx.shared import RGBColor

doc = Document()
docx_file = 'publication.docx'

#Titel
heading = doc.add_heading('Forschungsergebnisse', level=1)
heading.runs[0].font.color.rgb = RGBColor(0, 0, 0)
subheading = doc.add_heading('Original Papier', level=2)
subheading.runs[0].font.color.rgb = RGBColor(0, 0, 0)

#Liste der Papiere
for paper in papers:
    p = doc.add_paragraph(paper, style='List Number')

doc.save(docx_file)

スクリーンショット 2020-11-19 22.28.31.png Sie können jetzt eine Word-Datei Ihrer Leistungsliste aus der Researchmap erstellen, ohne sie manuell kopieren und einfügen zu müssen!

Referenz

Recommended Posts

Analysieren Sie die Researchmap-API mit Python und erstellen Sie automatisch eine Word-Datei für die Leistungsliste
Automatisieren Sie das Entfernen des Hintergrunds für die neuesten Porträts in einem Verzeichnis mit Python und API
[Python] Erstellen Sie eine Datums- und Zeitliste für einen bestimmten Zeitraum
Erstellen Sie eine Binärdatei in Python
Durchsuchen Sie das Verzeichnis und erstellen Sie eine Liste mit Verzeichnispfaden und Dateinamen
Ändern Sie die Liste in der for-Anweisung
[GPS] Erstellen Sie eine kml-Datei mit Python
Erstellen Sie eine GIF-Datei mit Pillow in Python
Erstellt einen Python-Wrapper für die Qiita-API
Kopieren Sie die Liste in Python
Tipps zum Erreichen der ATND-API mit Python
Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
[Python] Erstellen Sie eine Liste mit Datum und Uhrzeit (Datum / Uhrzeit-Typ) für einen bestimmten Zeitraum
Erstellen Sie eine REST-API mit dem in Lobe und TensorFlow Serving erlernten Modell.
Erstellen Sie ein Django-Projekt und eine Django-Anwendung in einer virtuellen Python-Umgebung und starten Sie den Server
Erstellen Sie eine saubere Datenbank zum Testen mit FastAPI und führen Sie Unittest of API mit pytest aus
Speichern Sie das Pystan-Modell und erhalten Sie eine Pickle-Datei
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Erstellen Sie einen lokalen Bereich in Python, ohne den Namespace zu verschmutzen
Listet Methodenargumentinformationen für Klassen und Module in Python auf
Csv spuckte eine Liste mit Dateinamen, zuletzt geänderten Daten und Zeichencodes in Python3 aus
Erstellen Sie ein untergeordnetes Konto für die Verbindung mit Stripe in Python
Holen Sie sich den MIME-Typ in Python und bestimmen Sie das Dateiformat
In Python werden die Elemente in der Liste sortiert und als Elemente und Vielfache ausgegeben.
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Erstellen Sie ein Skript für Ihre Pepper-Fertigkeit in einer Tabelle und laden Sie SayText direkt aus dem Skript
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Erstellen Sie eine Dox-Datei mit Miniaturansichten der Fotos im Ordner mit der Python-Python-Docx-Bibliothek und der kostenlosen Software "Nur Reduzierung".
Nützliche Tricks in Bezug auf Listen und Anweisungen in Python
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Erstellen Sie den Code, der in Python "A und vorgeben B" ausgibt
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Python: Erstellen Sie ein Wörterbuch aus einer Liste von Schlüsseln und Werten
Erstellen Sie eine neue Liste, indem Sie doppelte Elemente in der Liste kombinieren
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
Erstellen Sie ein Modell zum Speichern von Informationen aus der Google Books-API für eine intuitive Handhabung und Prüfung
Geben Sie die in S3 Bucket enthaltene Schlüsselliste in eine Datei aus
Wettbewerb mit VS-Code Erstellen Sie eine Python-Umgebung für Profis unter Windows
Suchen Sie den Dateinamen einschließlich des angegebenen Wortes und der angegebenen Erweiterung im Verzeichnis
[Python / Django] Erstellen Sie eine Web-API, die im JSON-Format antwortet
Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3
Erstellen Sie ein Shell-Skript, um die Python-Datei mehrmals auszuführen
Erstellen Sie mit Python + Qt (PySide) einen Farbwähler für das Farbrad.
Geben Sie einen Python-Ordner an oder erstellen Sie ihn, und speichern Sie den Screenshot.
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Lesen Sie die Datei in Python mit einem relativen Pfad aus dem Programm
Python vba zum Erstellen einer Datumszeichenfolge zum Erstellen eines Dateinamens
Rufen Sie die Formel in der Excel-Datei als Zeichenfolge in Python ab
Erstellen Sie eine CP932-CSV-Datei für Excel mit Chalice und geben Sie sie zurück
Abrufen der arXiv-API in Python
Unterschied zwischen list () und [] in Python
[Python] Verwalten Sie Funktionen in einer Liste
Erstellen Sie einen DI-Container mit Python
Klicken Sie in Python auf die Sesami-API
Erstellen Sie Google Mail in Python ohne Verwendung der API