0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【python】勉強メモ-その5 実務で書いたコード

Last updated at Posted at 2022-12-15

1.はじめに

本日は、実務でのテキスト加工について書きます。

実務でログを取得し、集計を行うことになり取得したログを、集計可能な形式(CSV形式)にしなければ
ならなくなりました。

出力されたログ(r_file.log)を見ると、日時が一番上に書かれており、各メッセージの一番左にありません。
集計するためには、日時を、各メッセージの一番左に追記したCSV形式(w_file.csv)にする必要がありました。

さらに、取得したログ(r_file.log)は、200万行ある状態でした。

r_file.log
Tue Nov 11 00:00:00 JST 2022
12 aaa bbb cc:cc:cc:cc ddd
34 eee fff gg:gg:gg:gg hhh

Tue Nov 11 00:00:05 JST 2022
78 iii jjj kk:kk:kk:kk lll
99 mmm nnn oo:oo:oo:oo ppp

Tue Nov 11 00:00:10 JST 2022
12 qqq rrr ss:ss:ss:ss ttt
34 uuu vvv ww:ww:ww:ww zzz

w_file.csv
Tue,Nov,11,00:00:00,12,aaa,bbb,cc:cc:cc:cc,ddd
Tue,Nov,11,00:00:00,34,eee,fff,gg:gg:gg:gg,hhh
Tue,Nov,11,00:00:05,78,iii,jjj,kk:kk:kk:kk,lll
Tue,Nov,11,00:00:05,99,mmm,nnn,oo:oo:oo:oo,ppp
Tue,Nov,11,00:00:10,12,qqq,rrr,ss:ss:ss:ss,ttt
Tue,Nov,11,00:00:10,34,uuu,vvv,ww:ww:ww:ww,zzz

2.作成したコード

取得したログ(r_file.log)が、200万行ということもあり、一気に読み込み/出力(書き込み)は
メモリの消費が大きいと思い、1行ずつ処理を行いました。

プログラミング入門者が、実務で書いたコードを掲載します。

sample_01.py
import csv

read_file = "r_file.log"
write_file = "w_file.csv"


with open(write_file, "w", encoding="utf_8", newline="") as w:
    writer = csv.writer(w)
    
    with open(read_file, "r", encoding="utf_8") as f:
        line = f.readline()
        
        while line:
            if line.startswith("Tue"):
                
                # JST 2022を除去
                data = line.split()[:4]
            
            # 列の開始が数字か確認
            if line[0] >= '0' and line[0] <= '9':
                elem = line.split()
                
                # 年月と時間を一番左に追記するため以下の処理を実施
                csv_data = data + elem
                
                writer.writerow(csv_data)
                
            line = f.readline()


3.コードについて

今回のコードは、まだまだ初心者レベルのため、突っ込みどころ満載だと思います。
今後、スキルアップのため、以下を取り入れて書き換えを行います。

  • CSVモジュール又は、pandasを使うこと。
  • 日時の抽出は、正規表現を使うこと。

4. 最後に

  • ツッコミ歓迎致します。皆様のツッコミが、私のスキルアップにつながります!!
  • お題なんかも出していただけると助かります。
  • 実務では、もっと、こういう使い方もあるよ!!みたいなアドバイスもいただけると嬉しいです。
0
0
2

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?