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行ずつループ処理する
読み込んだ行の処理方法
日付の変換とファイル出力(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
出力されたファイルで加工や編集