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.
Bitte sehen Sie hier. Aber es ist eine Zeile:
bash
pip install python-docx
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. )
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.)
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.
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.
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('')
Sie können dies in eine Word-Datei kopieren, aber es ist eine große Sache. Lassen Sie uns also unser Bestes geben.
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.
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))
Schreiben Sie die Liste "Papiere" in Word.
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)
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)
Sie können jetzt eine Word-Datei Ihrer Leistungsliste aus der Researchmap erstellen, ohne sie manuell kopieren und einfügen zu müssen!
Recommended Posts