LoginSignup
0
0

More than 3 years have passed since last update.

コマンドライン入力でテキストファイルを読み込んで、整形して吐き出すだけのツール

Last updated at Posted at 2020-07-26

動機

Elsevierのとある雑誌のこれまで発刊された全論文(オンライン化されてるもの)の書誌情報+アブストラクトのデータベースを作って、その分野の大きな流れをつかみたい。

ってことで、雑誌のページからひたすら書誌情報とアブストラクトをGoogle スプレッドシートに展開して、ついでに翻訳もしてるんだが、翻訳作業はともかく、書誌情報とアブストラクトがシンプルな改行だけで区切られた形になっていて、このままスプレッドシートに張り付けてもDBにならない。

手作業でコピペを繰り返してたが、ええ加減嫌になってきたので、整形してCSV化して吐き出させるプログラムを作る。

調べたこと

コマンドライン入力をどうやるのか

import sys
sys.argv[0]  # 実行してるファイルのパス
sys.argv[1]  # 一つ目の入力 

ファイル読みこみ(1行ずつ)

f=open(path, mode = r, encoding="UTF-8")
for s_line in f:
    print(s_line)
f.close()
# あるいは
with open(path, mode = r, encoding="UTF-8") as f
    for s_line in f:
        print(s_line)

ファイル書きこみ

f=open(path, mode = w, encoding="UTF-8")
    f.write("文字列")
f.close()
# あるいは
with open(path, mode = r, encoding="UTF-8") as f
    f.write("文字列")

日付時間取得

%Y:年、%m:月、%d:日
%H:時、%M:分、%S:秒

import datetme
dt_now = datetime.datetime.now()
print(dt_now.strftime("%Y_%m_%d_%H_%M_%S"))

書いたプログラム

import sys
import datetime

# ファイルパスをコマンドライン入力から読み取る
path = sys.argv[1]

# 読み取ったファイルを開く
f = open(path, encoding="UTF-8")

# 1行ずつ読み取って整形.区切り文字は";"
T = ""
for s_line in f:
    print(s_line)
    if s_line != "\n" :
        T = T+'"'+s_line.rstrip('\n')+'";'
    elif s_line == "\n" :
        T = T + "\n"


dt_now = datetime.datetime.now()
fname = "MakeDB"+dt_now.strftime("%Y_%m_%d_%H_%M_%S")+".csv"

# nf=open()でも良かったが、試しにwwithを使ってみた。
with open(fname,mode='w',encoding="utf-8") as nf:
    nf.write(T)

f.close()
0
0
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
0
0