【python】ファイルデータの不要なスペースをカンマに置換しCSVへ書き込むプログラム


Pythonでファイルデータを読み込み、余分な空白をカンマ「,」へ置換し、csvファイルで見やすいようにデータを変更するプログラムを書きました。

ファイルないのデータからCSVで表示した際の余分なスペースをカンマに置換する

CSVファイルの中身を見ると以下のようにスペース区切りでデータが表示されます。

ファイルシス            サイズ  使用  残り 使用% マウント位置

devtmpfs                  908M     0  908M    0% /dev

tmpfs                     920M     0  920M    0% /dev/shm

tmpfs                     920M  8.6M  911M    1% /run

tmpfs                     920M     0  920M    0% /sys/fs/cgroup

/dev/mapper/centos-root   6.2G  1.5G  4.8G   24% /

/dev/sda1                1014M  192M  823M   19% /boot

tmpfs                     184M     0  184M    0% /run/user/0

このデータをエクセルシートで開くと、スペースが邪魔で表示が見にくくなってしまいます。

この状態をきれいにするために不要なスペースを削除し、カンマ「,」に置換してCSVできれいに表示ができるようにします。
設定のプログラムは以下を参考にしてください。

Pythonで「reモジュール」を使用して置換するプログラム

Pythonで置換のプログラムを作成する場合は「reモジュール」を使用します。

※ test.py

import re

with open('file.csv', 'r', newline='') as file:
    text = re.sub(r's* ', ',', file.read())
    print(text)

上記では、対象の文字列を置換するために、「import re」を指定します。
さらに「re.sub」で全てのスペースとその後の9泊において、カンマ「,」に置換するようにします。

※ 実行結果

Python $ python3 test.py 

ファイルシス,サイズ,使用,残り,使用%,マウント位置

devtmpfs,908M,0,908M,0%,/dev

tmpfs,920M,0,920M,0%,/dev/shm

tmpfs,920M,8.6M,911M,1%,/run

tmpfs,920M,0,920M,0%,/sys/fs/cgroup

/dev/mapper/centos-root,6.2G,1.5G,4.8G,24%,/

/dev/sda1,1014M,192M,823M,19%,/boot

tmpfs,184M,0,184M,0%,/run/user/0

Python $ 

実行することにより、不要なスペースがなくなり、カンマに置換されました。


reモジュールを使用して置換した結果をファイルに書き込むプログラム

次に、上記で置換した出力結果をファイルに書き込む方法を紹介します。
以下では、読み込むファイルと、書き込み先のファイルを、「with文」を使用して同時に開きます。

ファイルを読み込み、スペースをカンマに置換した後、「file_out.csv」に書きこむようにします。

※ test.py

import re

with open('file.csv', 'r', newline='') as file, 
        open('file_out.csv', 'w', newline='') as fileout:


        text = re.sub(r's* ', ',', file.read())
        print(text, file = fileout)
        print('置換完了')

※ 実行結果

Python $ python3 test.py 
置換完了
Python $ 

実行結果として、書き込み先のファイルの中身が置換されたデータが書きこまれています。

ファイルシス,サイズ,使用,残り,使用%,マウント位置

devtmpfs,908M,0,908M,0%,/dev

tmpfs,920M,0,920M,0%,/dev/shm

tmpfs,920M,8.6M,911M,1%,/run

tmpfs,920M,0,920M,0%,/sys/fs/cgroup

/dev/mapper/centos-root,6.2G,1.5G,4.8G,24%,/

/dev/sda1,1014M,192M,823M,19%,/boot

tmpfs,184M,0,184M,0%,/run/user/0

実際にエクセルなどで開くと以下のようにきれいにセルで分割されて見た目がきれいに表示されています。

前回、置換ではなく、csvモジュールを使用した、余分なスペースをカンマへ変更するプログラムも書いているので合わせて参考にしてください。

【Python】ファイルデータから余計なスペース(空白)削除しカンマ区切りでCSVへ書き込むプログラム

2020年1月25日

ネットワーク機器などの出力結果をCSVなどできれいに表示したい際は今回のコードを利用してください。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!