Zolaで遊ぶ

tweets.jsの日付をPythonで変換する方法

tweets.jsの日付をPythonで変換する方法について個人的なメモ。

tweets.jsの日付(created_at)形式を「%a %b %d %H:%M:%S %z %Y」から「%Y-%m-%d %H:%M」に変換する。

時差なし、+9時間の2種類あり。※今回は「時差なし」を基本とする

tweets.jsをjqコマンドで手っ取り早くcsvにしてみるの続編。

まえがき

上級プログラマーは一回で解決するプログラムを書けると思う。

にわかプログラマーなので、手順を1つずつ分解して手間を掛けて作業を進める作戦。

  • Pythonで日付変換の方法を知る
  • 日付変換用のプログラムとファイル出力(test.py)
  • 日付の変換とファイル出力(date.py)
  • 日付変換されたファイルからCSVにコピペ

環境

  • パソコン: X230(Lenovo ThinkPad)
  • OS: LinuxMint 20.3(Xfce)
  • Python 3.8.10

Pythonで日付変換の方法を知る

「%a %b %d %H:%M:%S %z %Y」から「%Y-%m-%d %H:%M」に変換するコード(時差なし、ノーマル)

date_str = "Tue Jun 27 16:55:23 +0000 2023"
date_dt = datetime.datetime.strptime(date_str, '%a %b %d %H:%M:%S %z %Y')
print ( date_dt.strftime ('%Y-%m-%d %H:%M') )

+9時間のコード

date_str = "Wed Jun 28 02:29:48 +0000 2023"
date_dt = datetime.datetime.strptime(date_str, '%a %b %d %H:%M:%S %z %Y')
tw_dt = date_dt + datetime.timedelta(hours=9)
print ( tw_dt.strftime ('%Y-%m-%d %H:%M') )

参考

strftime( )・strptime( )について

Pythonのdatetimeを使いこなそう!現在日時取得から文字列変換まで

日付変換用のプログラムとファイル出力(test.py)

Pythonのループ処理をする「test.py」をつくる。

data.csvは、「tweets.jsをjqコマンドで変換」した「csvの日付(created_at)」を抜き出したcsvファイル。(引用符なしcsv)

test.pyのコード(時差なし、ノーマル)

import csv

with open('data.csv', 'r', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(f'date_str = \"{row[0]}\"')
        print('date_dt = datetime.datetime.strptime(date_str, \'%a %b %d %H:%M:%S %z %Y\')')
        print('print ( date_dt.strftime (\'%Y-%m-%d %H:%M\') )')
        print('')

test.py から date.pyへ出力する。

python3 test.py > date.py

+9時間のコード

import csv

with open('data.csv', 'r', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(f'date_str = \"{row[0]}\"')
        print('date_dt = datetime.datetime.strptime(date_str, \'%a %b %d %H:%M:%S %z %Y\')')
        print('tw_dt = date_dt + datetime.timedelta(hours=9)')
        print('print ( tw_dt.strftime (\'%Y-%m-%d %H:%M\') )')
        print('')

test.py から date.pyへ出力する。

python3 test.py > date.py

参考

pythonでCSVを読み込み1行ずつループ処理する

読み込んだ行の処理方法

【Python】CSVファイルを1行ずつ読み込む方法を解説

日付の変換とファイル出力(date.py)

書き出された「date.py」の1行目に「import datetime」をコピペ・記述・追記して保存。

「date.py」に「import datetime」を記述したコード(データ量が多いので省略)

import datetime

date_str = "Wed Jun 28 02:29:48 +0000 2023"
date_dt = datetime.datetime.strptime(date_str, '%a %b %d %H:%M:%S %z %Y')
print ( date_dt.strftime ('%Y-%m-%d %H:%M') )

date_str = "Tue Jun 27 16:55:23 +0000 2023"
date_dt = datetime.datetime.strptime(date_str, '%a %b %d %H:%M:%S %z %Y')
print ( date_dt.strftime ('%Y-%m-%d %H:%M') )

date_str = "Tue Jun 27 16:54:40 +0000 2023"
date_dt = datetime.datetime.strptime(date_str, '%a %b %d %H:%M:%S %z %Y')
print ( date_dt.strftime ('%Y-%m-%d %H:%M') )

date_str = "Tue Jun 27 16:38:50 +0000 2023"
date_dt = datetime.datetime.strptime(date_str, '%a %b %d %H:%M:%S %z %Y')
print ( date_dt.strftime ('%Y-%m-%d %H:%M') )

date_str = "Tue Jun 27 16:36:18 +0000 2023"
date_dt = datetime.datetime.strptime(date_str, '%a %b %d %H:%M:%S %z %Y')
print ( date_dt.strftime ('%Y-%m-%d %H:%M') )

保存した「date.py」からファイルへ書き出し。(txt か csv)

python3 date.py > date.txt

python3 date.py > date-1.csv

日付変換されたファイルからCSVにコピペ

出力された date.txt の中身を csvに貼り付け(コピペ)

2023-06-28 02:29
2023-06-27 16:55
2023-06-27 16:54
2023-06-27 16:38
2023-06-27 16:36

csvの操作で、ソートするなり、加工や編集をすることができる様になる。

個人的なまとめ

python3で動かない場合は「python」で試してみる。(環境による)

tweets.jsをjqコマンドで手っ取り早くcsvにしてみる

base.csv から「created_at」の列を抜き出して、data.csv で保存

python3 test.py > date.py

date.py 1行目にコピペ・記述・追記
import datetime

python3 date.py > date.txt

python3 date.py > date-1.csv

出力されたファイルで加工や編集