Pythonでファイル内のデータを抽出し、csv貼り付ける際、余計な空白行があるためにきれいにシートに貼り付けられないってことがあります。
csvではエクセルなどで開く際には、デフォルトカンマ区切りでセルに貼り付けをされます。
この無駄な空白行をカンマに変更するプログラムを書きました。
ファイルデータから余計なスペース、空白を削除しカンマ「,」区切りで別ファイルへ書き込むプログラム
今回は以下のように、Linuxサーバからc取得したデータをcsvファイルに書き込みました。
※ file.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ファイルとして開くと、表示がずれて見にくくなってしまいます。
このような表示をCSVできれいに表示するために、スペースを全てカンマ「,」に変更するプログラムを書きます。
ネットワーク機器から出力したデータをCSVにきれいに表示するプログラム
以下がNW機器から取得したデータの出力結果の空白部分をカンマに変更するプログラムとなります。
import csv with open('file.csv', 'r', newline='') as filein, \ open('file_out.csv', 'w', newline='') as fileout: reader = csv.reader(filein, delimiter=' ', skipinitialspace=True) writer = csv.writer(fileout) writer.writerows(reader) print('file_out.csvへの出力完了')
上記のプログラムの説明は以下となります。
- 「import csv」でcsvモジュールをインポート
- 「with open」で読み取り元のファイルと、書き込み先のファイルを開く
- csv.reader : 「delimiter=’ ‘」でスペースごとに分割されるようになる
- csv.reader : 「skipinitialspace=True」と指定すると、コンマの後の空白をスキップする。
- csv.writer(fileout) : writerオブジェクトを作成
- writer.writerows : 取得したデータ「reader」の内容を書き込む
プログラムの実行結果
上記プログラムの実行結果は以下となります。
※ 実行結果
Python $ python3 excel-test.py file_out.csvへの出力完了 Python $
出力されたファイルの中身はスペースがカンマ区切りになっています。
※ file_out.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ファイルをきれいに表示する際には結構便利なプログラムですので参考にしてください。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す