こんにちは。まれーどです。
C#でやったやつをPythonの練習がてら作ってみた。
使い方
config.iniファイルを開きます。
splitCharの値には、前後入れ替えする基準の文字を設定します。1文字だけかと思ったら2文字以上でも大丈夫そうでした。
lastCharの値は、最後の文字が変わってほしくない場合は設定してください。C#の処理の最後には、セミコロンが必要だったので項目を入れておきました。不要だったら何も設定しなくて大丈夫です。
ソース(解説する気のない解説)
コンフィグの読み込みを行う
# コンフィグファイルから読み込み
config = configparser.ConfigParser()
config.read('config.ini', encoding='utf-8')
splitchar = config['DEFAULT']['splitChar']
lastchar = config['DEFAULT']['lastChar']
今回はconfigparserを使用してコンフィグファイルの読み込みを行いました。configの一つ目の[]の内容を変更することで、色んなタグ?の設定を読み込めると。考えるのめんどかったからDEFAULTにしたけど。
ファイルパス読み込みからファイルオープン
# ファイルパスを入力
filepath = input()
# 書き込み用配列
lswrite = []
# ファイルオープン
with open(filepath, 'r') as f:
# ファイルの行数分処理する
for readitem in f:
temp = readitem.strip().strip(lastchar).split(splitchar)
# 分割数が2出ない場合は次の行を読み込む
if len(temp) != 2:
continue
lswrite.append(temp[1] + splitchar + temp[0] + lastchar +'\n')
ターミナルの入力を受け付けるのはinput()を使う。
ファイルオープンにwithを使うとcloseのし忘れがなくスマートに書ける。C#でいうusingかな。
openの第2引数を’r’で読み取りで開いてる。
読み込んだテキストが改行コードを含んでるので、strip()で空白、改行コードを削除。
今回は「;」を削除したかったから、設定ファイルで削除できるようにstrip()した。
末尾のみ削除でいいからrstrip()を使えば良かったかも。
splitで分割して、入れ替えてリストに追加。
ファイルパス書き込み
# 書き込むデータが存在すれば処理する
if len(lswrite) > 0:
with open(filepath, 'w') as wr:
for writeitem in lswrite:
wr.write(writeitem)
lenで要素が含まれてたら書き込みするか判定する。
openの第2引数を’w’で書き込みモードというか上書きモードで開く。同じファイルに追加するなら’a’を指定すると良い。
あとは要素の数だけ処理して終わり。
最後に
1年ぶりくらいにPythonのコードを書いた気がする。意外と覚えてることがあったけど、書かなきゃ鈍るなって思った。今後も練習がてら色々と作っていきます。今回はほぼ備忘みたいな感じだった。なんかの参考になれば。
参考
設定ファイルの読み込み
https://kodocode.net/python-begin-settings/
先頭と末尾から文字列を削除する
ファイルの読み書き
https://atmarkit.itmedia.co.jp/ait/articles/2104/16/news022.html