researchmap.jpの"競争的資金等の研究課題"に得られた競争的研究資金の情報を書くのが面倒な時、ありますよね。ここはcsvからのインポートに対応しているので、
科研費であればKAKENデータベース
https://nrid.nii.ac.jp
のデータをcsvでエクスポートして、researchmap.jpにインポートできるかな、と考える方もいると思います。
しかし、そのままではできません。
以下に、KAKENデータベースで出力したcsvファイルからresearchmap.jpでインポートできるcsvファイルを出力するPython3コードを記します。
#「研究者をさがす」のcsvファイルからインポート
ここでは、KAKENデータベースのcsvファイルは、研究者を探す、で名前を探し、「テキスト(CSV)で出力」とした時に出てくるファイルを念頭においています。これを使うと総配分額などが記されないcsvファイルがエクスポートされます。
import csv
csv_file =open("./csvfromKAKENHI.csv", "r", encoding="utf_8", errors="", newline="" )
f = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)
#"研究課題名","研究課題名 (英文)","研究課題/領域番号","研究期間 (年度)","研究代表者","研究分担者","連携研究者","研究協力者","特別研究員","外国人特別研究員","受入研究者","キーワード","研究分野","審査区分","研究種目","研究機関","研究課題ステータス"
count = -1
kakenhi = "科学研究費補助金"
data = [["提供機関(日本語)","提供機関(英語)","制度名(日本語)","制度名(英語)","タイトル(日本語)","タイトル(英語)","研究期間(From)","研究期間(To)","代表者(日本語)","代表者(英語)","配分額(総額)","配分額(直接経費)","配分額(間接経費)","Permalink","研究概要(日本語)","研究概要(英語)"]]
for row in f:
count += 1
if count == 0:
continue
tkikan = "null" #:"提供機関(日本語)"
tkikan_e = "null" #:"提供機関(英語)"
kubun = kakenhi+" "+row[14] #"制度名(日本語)"
kubun_e = "null" #"制度名(英語)"
title = row[0] #"タイトル(日本語)"
title_e = "null" #タイトル(英語)"
kikan = row[3]
kugiri = kikan.split(" – ")
kfrom = kugiri[0].split("-")[0]+"00" #"研究期間(From)"
kto = kugiri[1].split("-")[0]+"00" #"研究期間(To)"
name_a = row[4].split()[0:2]
name_a = name_a[0]+" "+name_a[1] #,"代表者(日本語)"
name_e = "null" #"代表者(英語)"
haibun_t = "null" #"配分額(総額)"
haibun_d = "null" #"配分額(直接経費)"
haibun_i = "null" #"配分額(間接経費)"
permalink = "null" #"Permalink"
gaiyou_j = "null" #"研究概要(日本語)"
gaiyou_e = "null" #"研究概要(英語)"
data.append([tkikan,tkikan_e,kubun,kubun_e,title,title_e,
kfrom,kto,name_a,name_e,haibun_t,haibun_d,haibun_i,permalink,gaiyou_j,gaiyou_e])
with open('dataforresearchmap.csv', 'w',encoding='shift_jis') as f:
writer = csv.writer(f, lineterminator='\n',quoting=csv.QUOTE_NONNUMERIC)
for datai in data:
print(datai)
writer.writerow(datai)
でできます。
#「研究課題を探す」のcsvファイルからインポート
こちらからエクスポートすると、総配分額などが記されたcsvファイルがエクスポートされます。
import csv
csv_file =open("./csvfromKAKENHI.csv", "r", encoding="utf_8", errors="", newline="" )
f = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)
count = -1
#"研究課題名","研究課題名 (英文)","研究課題/領域番号","研究期間 (年度)","研究代表者","研究分担者",
#"連携研究者","研究協力者","特別研究員","外国人特別研究員","受入研究者","キーワード","研究分野",
#"審査区分","研究種目","研究機関","応募区分","総配分額","総配分額 (直接経費)","総配分額 (間接経費)",
#"各年度配分額","各年度配分額 (直接経費)","各年度配分額 (間接経費)","現在までの達成度 (区分コード)",
#"現在までの達成度 (区分)","理由","研究概要","研究概要 (英文)","研究成果の概要",
#"研究成果の概要 (英文)","研究実績の概要","現在までの達成度 (段落)",
#"今後の研究の推進方策","次年度の研究費の使用計画","次年度使用額が生じた理由",
#"次年度使用額の使用計画","自由記述の分野","評価記号","備考"
kakenhi = "科学研究費補助金"
data = [["提供機関(日本語)","提供機関(英語)","制度名(日本語)","制度名(英語)","タイトル(日本語)","タイトル(英語)","研究期間(From)","研究期間(To)","代表者(日本語)","代表者(英語)","配分額(総額)","配分額(直接経費)","配分額(間接経費)","Permalink","研究概要(日本語)","研究概要(英語)"]]
for row in f:
count += 1
if count == 0:
continue
#print(row)
tkikan = "null" #:"提供機関(日本語)"
tkikan_e = "null" #:"提供機関(英語)"
kubun = kakenhi+" "+row[14] #"制度名(日本語)"
kubun_e = "null" #"制度名(英語)"
title = row[0] #"タイトル(日本語)"
title_e = "null" #タイトル(英語)"
kikan = row[3]
kugiri = kikan.split(" – ")
kfrom = kugiri[0].split("-")[0]+"00" #"研究期間(From)"
kto = kugiri[1].split("-")[0]+"00" #"研究期間(To)"
name_a = row[4].split()[0:2]
name_a = name_a[0]+" "+name_a[1] #,"代表者(日本語)"
name_e = "null" #"代表者(英語)"
haibun_t = row[17] #"null" #"配分額(総額)"
haibun_d = row[18] #"null" #"配分額(直接経費)"
haibun_i = row[19]#"null" #"配分額(間接経費)"
permalink = "null" #"Permalink"
gaiyou_j = "null" #"研究概要(日本語)"
gaiyou_e = "null" #"研究概要(英語)"
data.append([tkikan,tkikan_e,kubun,kubun_e,title,title_e,
kfrom,kto,name_a,name_e,haibun_t,haibun_d,haibun_i,permalink,gaiyou_j,gaiyou_e])
with open('dataforresearchmap.csv', 'w',encoding='shift_jis') as f:
writer = csv.writer(f, lineterminator='\n',quoting=csv.QUOTE_NONNUMERIC)
for datai in data:
print(datai)
writer.writerow(datai)
誰かの役に立てば幸いです。