Pythonを使用しテキストファイルから空白行を削除してみます。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■テキストファイルを用意する
テキストファイルから空白行を削除してみますので、まずはテキストファイルを用意します。
今回は「test.txt」という上記のtxt形式のテキストファイルを用意しました。このファイルが置かれている場所は「C:\Users\user_\test(フォルダパス)」になります。
■テキストファイルから空白行を削除する
テキストファイルの用意ができましたので、テキストファイルから空白行を削除するスクリプトを書いていきます。
■コード
import sys output="" with open(r"C:\Users\user_\test\test.txt", encoding="utf-8") as f: for line in f: if not line.isspace(): output+=line f = open(r"C:\Users\user_\test\test.txt","w") f.write(output)
今回はimportでPythonの標準ライブラリであるsysモジュールをインポートします。
その後、outputという変数を定義し、変数内には「””」とし空の変数とします。
そして、with構文を用いたファイル操作で、open()の括弧内に第1の引数,パラメータとして、今回用意したテキストファイルが置かれている場所(フォルダパス)を渡します。第2の引数,パラメータとして、UTF8エンコードでファイルを読み取るように設定します。設定しないと「UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x81 in position 22: illegal multibyte sequence」というエラーが発生する。
ファイル内のデータを読み取った後に、データを”f”とし、for文を用いてfを順番にline変数へ格納します。格納後、if文で論理演算子notを用い、さらにisspace()を用いてline変数内の文字列で文字が空白の場合は真(True)を返し、それ以外の場合は偽(False)が返されます。
論理演算子notを用いていますので、偽(False)の場合は真(True)となり、if文内の処理がされます。今回の処理は、加算代入演算子”+=”(プラスイコール)を用いて、outputにline変数を代入します。これで、テキストファイルから読み取ったデータから空白行が削除されます。
削除後、open()を用いて、括弧内の第1の引数,パラメータに空白行が削除された状態のテキストファイルを出力する先とファイル名前を指定します。第2の引数,パラメータでは”w(書き込み (上書き)モード)”に設定し開きます。これで出力するファイルがデータを書き込みできる状態になります。
最後に、write()を用い括弧内に引数,パラメータとして、加算代入演算子”+=”(プラスイコール)を用いて、line変数を代入したoutput変数を渡します。これで、空白行が削除された状態のデータが、出力するファイル(今回はtest.txt)に書き込みされます。
■実行・検証
このスクリプトを「blankline_text.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行すると、今回は処理完了後に、print()を用いて書き込み完了といった文字列の出力は記述していないので、何も出力されません。
出力されませんが、出力されたファイルを確認すると、空白行が削除されていることが確認できました。
コメント