私がPythonでよく使うのがこのテキスト処理モジュールです。
コンソールでサクッと処理したいときに用います。
様々なファイル読み込みから色々な文字列処理が施せてなかなか便利なので紹介したいと思います。
今まで作成したモジュールを全てインポートしていますので、やっとやれることが豊富になってきましたね。
では、早速作成します。
プロジェクト
前回の「Python | 1. 汎用プログラム」で作成した「CodeAnalyzer」というプロジェクト内で作業します。
モジュールの追加は、その中の「pgming-package」になります。
ソースコード
下の画像のように追加してください。
以下がソースです。
.pyのダウンロードはセキュリティ的にアウトなのでコピーでお願いします。
ファイル・フォルダの確認や作成したり、
ファイル内容全てを行リストとして読み込んだり、
入力された文字列から指定したファイル内を検索しその文字列がある行番号かつ行リストを取得したり、
と色々できます。
また、文字列操作のクラスがあるのですが、これも結構応用が効いていて使えます。
直接エンコードを指定できるのですが、まあなくても出来ます。
それはエンコードを総当たりで読み込んでいるからです。
冒頭でcharcode.pyを読み込んでいるのですが、それが以下になります。
# 文字コードリスト
list_charcode = [
'cp932',
'shift_jis',
'utf_8',
'euc_jp',
'iso2022_jp',
]
以上の文字コードリストでこれらを総当たりで読み込むことにより処理速度を保っています。
ネットで検索すると、ファイル内容を何バイトか読み込んで判定するなんて処理がありますが、すごく遅いことが分かるかと思います。
そんなのでは埒があかないので、力技ではありますが、総当たりで読み込んでそれ以外の文字コードであればエラー文として吐き出すようにしています。
以下のように追加してください。
また、実行するためのテスト媒体を「test_text.cpp」として用意します。
以下のように追加してください。
文字コードは上記の文字コードリスト内のどれかであれば何でもいいです。
このテスト媒体は、DirectX12の初期化コードとなっています。
こちらの記事「DirectX12 | 1. 初期化」のものと同じものです。
デバッグ実行
では、実行してみましょう!
module_console_text.pyが画面上に出ていることを確認して、「F5」キーを押します。
すると以下のようにテスト媒体となる「test_text.cpp」がエクスプローラー経由で表示されることと思いますが、これを読み込みますよという感じなので閉じて構いません。
それからヘビのアスキーアートが出てくるのでEnterを押せば処理が開始します。
この中から必要なものを取り出してテスト実行していることが確認できると思います。
以下の3つをファイル内から検索して取り出し、そこから文字列加工してprintで表示しています。
- コメント行
- return
- FAILED
エラーなく出来たら成功です。お疲れさまでした。