当ブログのコンテンツ・情報について、できる限り正確な情報を提供するように努めておりますが、正確性や安全性を保証するものではありません。
当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますので、予めご了承ください。
【Python】部分一致を検出し、必要な単語だけ抽出するアプリケーション作成
Pythonでの文字列処理はデータのクレンジングや分析において非常に重要です。特に、部分一致する単語を取り除いて一意的な単語を抽出することは、データの品質を高める上で欠かせません。
この記事では、PythonのGUIライブラリ「tkinter」を使用して、部分一致する単語を自動で除去し、必要な単語だけを抽出するアプリケーションを作成する方法をご紹介します。
目次
この記事で使用するPythonライブラリ
この記事では以下のPythonライブラリを使用します。
ライブラリ | 用途 | ライセンス |
---|---|---|
tkinter | GUI作成 | Python標準モジュール |
Pythonで部分一致する単語を除去するGUIアプリケーションの作成
実装コード
このアプリケーションは、ユーザーが入力した単語リストから部分一致する単語を自動的に除去し、一意的な単語のみを抽出します。また、抽出結果をクリップボードにコピーする機能も備えています。
以下のコードを実行すると、単語リストを改行区切りで入力して、一意的な単語のみを抽出する簡単なGUIアプリケーションが動作します。また、抽出結果をクリップボードにコピーすることも可能です。
import tkinter as tk
from tkinter import scrolledtext
from tkinter import messagebox
# 部分一致を検出し、一意的な単語を抽出する関数
def filter_unique_words(words):
unique_words = set(words) # 初期リストをセット化して重複を排除
filtered_words = set(unique_words) # 部分一致のためにコピー
for word in unique_words:
for other_word in unique_words:
if word != other_word and word in other_word:
if len(other_word) > len(word): # 長い方の単語を削除
filtered_words.discard(other_word)
return list(filtered_words)
# 一意的な単語を抽出して表示する関数
def on_click():
input_text = input_textbox.get("1.0", tk.END).strip()
words = input_text.splitlines()
unique_words = filter_unique_words(words)
output_textbox.delete("1.0", tk.END)
output_textbox.insert(tk.END, "\n".join(unique_words))
# 結果をクリップボードにコピーする関数
def copy_to_clipboard():
output_text = output_textbox.get("1.0", tk.END).strip()
if output_text:
root.clipboard_clear()
root.clipboard_append(output_text)
messagebox.showinfo("コピー完了", "一意的な単語リストがクリップボードにコピーされました。")
else:
messagebox.showwarning("エラー", "コピーする内容がありません。")
# メインウィンドウの作成
root = tk.Tk()
root.title("一意的な単語抽出ツール")
root.geometry("500x350")
# ラベル
input_label = tk.Label(root, text="単語リストを改行区切りで入力してください:")
input_label.pack()
# 入力テキストエリア
input_textbox = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=60, height=8)
input_textbox.pack()
# 実行ボタン
run_button = tk.Button(root, text="一意的な単語を抽出", command=on_click)
run_button.pack(pady=5)
# 結果ラベル
output_label = tk.Label(root, text="一意的な単語リスト:")
output_label.pack()
# 結果表示エリア
output_textbox = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=60, height=8)
output_textbox.pack()
# クリップボードにコピーするボタン
copy_button = tk.Button(root, text="クリップボードにコピー", command=copy_to_clipboard)
copy_button.pack(pady=5)
# メインループ
root.mainloop()
アプリケーションの使い方
- 改行区切りで単語リストを入力します。
- 「一意的な単語を抽出」ボタンをクリックすると、部分一致する単語が除去されます。
- 「クリップボードにコピー」ボタンをクリックすると、抽出結果がクリップボードにコピーされます。
まとめ
このPythonアプリケーションは、部分一致する単語を自動的に除去し、一意的な単語を抽出する便利なツールです。
tkinterを使用することで、GUIインターフェースを簡単に作成でき、ユーザーにとって使いやすいアプリケーションに仕上げ、クリップボードへのコピー機能を追加することで、結果の再利用も容易にするようにしました。