【Python】テキストファイルの任意の文字を一括で検索置換するコード【Windows】

本ブログはアフィリエイト広告を利用しています

WEB / アプリ
WEB / アプリ
この記事は約5分で読めます。

とっちゃん@nyanco! です。

今回はWindowsのドラッグ&ドロップしたテキストファイル内のテキストを任意の置換ルールで一括変換するPythonコードの共有です。

肉玉にゃんこ

検索置換のルールはいくつでも指定可能ですにゃ~!

検索置換したテキストファイルは必ず内容をチェックしてください。本記事で紹介するスクリプトの使用は自己責任でお願いいたします。
【テキスト比較便利ツール】→テキスト比較ツール difff《デュフフ》

スポンサーリンク

コードの動作環境

  • OS:Windows10 ※macOSでは未確認
  • Pythonバージョン:3.11.2
  • 必要ライブラリ:os tkinterdnd2(インストール:pip install tkinterdnd2)

コード作成のきっかけ

最終的なアウトプットが機種依存文字が使えない環境なのに、その原稿が機種依存文字だらけのテキストデータばかりという業務に出くわしたのが作成しようと思ったキッカケです。

肉玉にゃんこ

手作業で打ち替え作業するとヒューマンエラーのリスクもありますにゃ〜

D&Dしたテキストファイルのテキストを一括検索置換するコード

早速ですがコードはこちら!

import tkinter as tk
from tkinterdnd2 import DND_FILES, TkinterDnD

def replace_and_save(input_file_path, output_file_path):
    # 置換ルールを定義
    replacement_rules = {
        '①': '(1)',
        '②': '(2)',
        '③': '(3)',
        '④': '(4)',
        '⑤': '(5)',
        '⑥': '(6)',
        '⑦': '(7)',
        '⑧': '(8)',
        '⑨': '(9)',
        '⑩': '(10)',
        '⑪': '(11)',
        '⑫': '(12)',
        '⑬': '(13)',
        '⑭': '(14)',
        '⑮': '(15)',
        '⑯': '(16)',
        '⑰': '(17)',
        '⑱': '(18)',
        '⑲': '(19)',
        '⑳': '(20)',
        # 他の置換ルールも追加できます
    }
    
    try:
        with open(input_file_path, 'r', encoding='utf-8') as input_file:
            # ファイル内容を読み込み、置換を行う
            content = input_file.read()
            for old, new in replacement_rules.items():
                content = content.replace(old, new)

        # 置換後の内容を新しいファイルに書き込み
        with open(output_file_path, 'w', encoding='utf-8') as output_file:
            output_file.write(content)

        print(f'ファイルが置換されて {output_file_path} に保存されました。')
    except FileNotFoundError:
        print(f'指定されたファイル {input_file_path} が見つかりません。')
    except Exception as e:
        print('エラーが発生しました: {}'.format(str(e)))

def drop(event):
    # ドロップされたファイルのパスを取得
    input_file_path = event.data
    output_file_path = input_file_path.replace('.txt', '_output.txt')
    replace_and_save(input_file_path, output_file_path)

app = TkinterDnD.Tk()

# ドロップを受け入れるラベル
label = tk.Label(app, text="テキストファイルをここにドロップしてください")
label.pack(padx=20, pady=20)

# ドロップ操作を処理するコールバックを設定
app.drop_target_register(DND_FILES)
app.dnd_bind('<<Drop>>', drop)

app.mainloop()

コードはChatGPTで作成したものを少しカスタマイズしています。

7行目から以下の形式で検索置換のルールを定義しています。

'検索文字列': '置換文字列',
肉玉にゃんこ

検索置換ルールはいくつでも追加できますにゃ〜
良く使う検索置換を登録しておくとめちゃくちゃ便利ですにゃ〜!

▼サクッとすぐに使えるように下記より.pyファイルのダウンロードも可能です(zip圧縮しています)。

→フォルダ内のPDFの1ページ目をJPGに一括変換するPythonコードをダウンロード

使い方

簡単に使い方を解説します。

▼.pyファイルをダブルクリックすると下記のようなウィンドウが表示されるので、テキストファイルをドラッグ&ドロップします。

複数のテキストファイルの一括処理はできません。一つずつドラッグ&ドロップしてください。
また、WORDのファイルも対象外なので、プレーンテキスト(.txt)ファイルに変換するなどしてください。

▼するとドロップしたテキストファイルと同じフォルダ内に、末尾に「_output」という文字列が追加されたテキストファイルが自動生成されます。これが検索置換処理されたファイルとなります。

左が処理前右が処理後のテキストファイルです。きっちり検索置換ルール通りに置換されてますね!

肉玉にゃんこ

ドロップするだけでアッという間に置換してくれますにゃ〜

おわりに

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

コメント