以下のような形式のタイムスタンプを持つ巨大なログ ファイルがあります。
08/07/2013 11:40:08 PM INFO
次のように、Pythonを使用してそれをmysqlタイムスタンプに変換したい:
2013-04-11 13:18:02
それを行うためのPythonスクリプトを作成しましたが、タイムスタンプルーチンを簡単かつ効率的に実行するために、組み込みのPythonパッケージ/関数が既に作成されているのではないかと思っています。
データの「マッサージ」は私の日常業務の一部であるため、コードの効率性や新しい機能、さらには新しいツールの使用法に関する提案をいただければ幸いです。
(注: 入力ファイルは ^A で区切られており、それも同時に csv に変換しています)
($ cat output.file | python csv.py > output.csv)
import sys
def main():
for line in sys.stdin:
line = line[:-1]
cols = line.split(chr(1))
cols[0] = convertTime(cols[0])
cols = [ '"' + col + '"' for col in cols ]
print ",".join(cols)
def convertTime(loggingTime):
#mysqlTime example: 2013-04-11 13:18:02
#loggingTime example: 08/07/2013 11:40:08 PM INFO
#DATE
month, day, year = loggingTime[0:10].split('/')
date = '/'.join([year,month,day])
#TIME
hour, minute, second = loggingTime[11:19].split(':')
flag = loggingTime[20:22]
if flag == 'PM':
hour = str(int(hour) + 12)
time = ":".join([hour, minute, second])
mysqlTime = date + " " + time
return mysqlTime
if __name__ == '__main__':
main()