LoginSignup
1
2

More than 5 years have passed since last update.

researchmap.jpの"競争的資金等の研究課題"をKAKENデータベースからインポートする

Last updated at Posted at 2018-10-15

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)

誰かの役に立てば幸いです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2