はじめの前のおねがい
できれば「いいね♡」をお願いします。励みになります。
はじめに
このコードはPython 3とPythonista 3に対応しています。本コードはクリップボード内にある通常のアルファベット(ä, ö, üなどには未対応)をUnicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換するコードです。
本コードを実行するとどうなるか
本コードは
- クリップボード内のある通常のアルファベットを検知
- Unicodeに用意されているフラクトゥア(亀甲文字,ブラックレター)に変換
- クリップボードに再コピー
を行います。
例
実行前のクリップボード:
Welcome to the English-language Wiktionary, a collaborative project to produce a free-content multilingual dictionary. It aims to describe all words of all languages using definitions and descriptions in English.
実行後のクリップボード:
𝔚𝔢𝔩𝔠𝔬𝔪𝔢 𝔱𝔬 𝔱𝔥𝔢 𝔈𝔫𝔤𝔩𝔦𝔰𝔥-𝔩𝔞𝔫𝔤𝔲𝔞𝔤𝔢 𝔚𝔦𝔨𝔱𝔦𝔬𝔫𝔞𝔯𝔶, 𝔞 𝔠𝔬𝔩𝔩𝔞𝔟𝔬𝔯𝔞𝔱𝔦𝔳𝔢 𝔭𝔯𝔬𝔧𝔢𝔠𝔱 𝔱𝔬 𝔭𝔯𝔬𝔡𝔲𝔠𝔢 𝔞 𝔣𝔯𝔢𝔢-𝔠𝔬𝔫𝔱𝔢𝔫𝔱 𝔪𝔲𝔩𝔱𝔦𝔩𝔦𝔫𝔤𝔲𝔞𝔩 𝔡𝔦𝔠𝔱𝔦𝔬𝔫𝔞𝔯𝔶. ℑ𝔱 𝔞𝔦𝔪𝔰 𝔱𝔬 𝔡𝔢𝔰𝔠𝔯𝔦𝔟𝔢 𝔞𝔩𝔩 𝔴𝔬𝔯𝔡𝔰 𝔬𝔣 𝔞𝔩𝔩 𝔩𝔞𝔫𝔤𝔲𝔞𝔤𝔢𝔰 𝔲𝔰𝔦𝔫𝔤 𝔡𝔢𝔣𝔦𝔫𝔦𝔱𝔦𝔬𝔫𝔰 𝔞𝔫𝔡 𝔡𝔢𝔰𝔠𝔯𝔦𝔭𝔱𝔦𝔬𝔫𝔰 𝔦𝔫 𝔈𝔫𝔤𝔩𝔦𝔰𝔥.
※ 文章出典:英語版Wiktionaryのメインページ
必要なモジュール(Python 3の場合)
pip install pyperclip
ソースコード
# クリップボードの処理とローマンアルファベットをフラクトゥーア文字に変換するクラス
class RomanToFrakturConverter:
def __init__(self):
# クリップボードモジュールのインポート処理
try:
import clipboard # Pythonista用
self.clipboard_available = True
self.clipboard = clipboard
except ImportError:
try:
import pyperclip # Pythonistaでclipboardが使えない場合
self.clipboard_available = False
self.clipboard = pyperclip
except ImportError:
print("どちらのクリップボードモジュールも使用できません。")
self.clipboard_available = None
# ローマンアルファベットからフラクトゥーアへの変換辞書(Unicodeコードポイント)
self.conversion_dict = {
'A': '\U0001D504', 'B': '\U0001D505', 'C': '\u212D', 'D': '\U0001D507', 'E': '\U0001D508', 'F': '\U0001D509', 'G': '\U0001D50A',
'H': '\U0001D50B', 'I': '\u2111', 'J': '\U0001D50D', 'K': '\U0001D50E', 'L': '\U0001D50F', 'M': '\U0001D510', 'N': '\U0001D511',
'O': '\U0001D512', 'P': '\U0001D513', 'Q': '\U0001D514', 'R': '\U0001D515', 'S': '\U0001D516', 'T': '\U0001D517', 'U': '\U0001D518',
'V': '\U0001D519', 'W': '\U0001D51A', 'X': '\U0001D51B', 'Y': '\U0001D51C', 'Z': '\u2128',
'a': '\U0001D51E', 'b': '\U0001D51F', 'c': '\U0001D520', 'd': '\U0001D521', 'e': '\U0001D522', 'f': '\U0001D523', 'g': '\U0001D524',
'h': '\U0001D525', 'i': '\U0001D526', 'j': '\U0001D527', 'k': '\U0001D528', 'l': '\U0001D529', 'm': '\U0001D52A', 'n': '\U0001D52B',
'o': '\U0001D52C', 'p': '\U0001D52D', 'q': '\U0001D52E', 'r': '\U0001D52F', 's': '\U0001D530', 't': '\U0001D531', 'u': '\U0001D532',
'v': '\U0001D533', 'w': '\U0001D534', 'x': '\U0001D535', 'y': '\U0001D536', 'z': '\U0001D537'
}
# ローマンアルファベットをフラクトゥーア文字に変換するメソッド
def roman_to_fraktur(self, text):
result = []
for char in text:
if char in self.conversion_dict:
result.append(self.conversion_dict[char])
else:
result.append(char) # 辞書にない文字はそのまま
return ''.join(result)
# クリップボードのテキストを変換して再設定するメソッド
def convert_clipboard(self):
if self.clipboard_available is not None:
# クリップボードからテキストを取得
if self.clipboard_available:
clipboard_text = self.clipboard.get() # Pythonista用
else:
clipboard_text = self.clipboard.paste() # pyperclip用
# クリップボードの内容を変換
converted_text = self.roman_to_fraktur(clipboard_text)
# 変換後のテキストをクリップボードに再設定
if self.clipboard_available:
self.clipboard.set(converted_text) # Pythonista用
else:
self.clipboard.copy(converted_text) # pyperclip用
print("クリップボードの内容がフラクトゥーア文字に変換されました。")
print(converted_text)
else:
print("クリップボードモジュールが使用できないため、変換を実行できませんでした。")
# スクリプトが直接実行された場合のみ、クリップボード変換を実行
if __name__ == "__main__":
converter = RomanToFrakturConverter()
converter.convert_clipboard()
以上です。
おわりに
別途、フラクトゥーア(亀甲文字,ブラックレター)を26アルファベットに変換するコードも用意してあります。