#author("2024-02-19T16:58:20+09:00","default:yakumo_murakami","yakumo_murakami") #author("2024-02-19T17:00:05+09:00","default:yakumo_murakami","yakumo_murakami") [[今さらPython]] * 主題 [#y8dcc4c1] ネット小説を書いているのだけど、こういう書き方をする登場人物がいる。 「車ニ名前ヲツケル趣味ハナイカナ。アエテ言エバ商品名『すずき・えぶりい』カラ、えぶりいッテ呼ンデルケドサ」 ''意外と入力が面倒くさい。''~ 普通に変換で入力できないからね……。~ こういう時こそ、気軽なスクリプト言語の出番だ。~ さっそく、pythonで変換してみることにした。 (ついでにクリップボードにもコピーするので、そのまま本文にペーストできます) * 参考 [#u5687a9a] - UTF-8ひらがな https://ja.wikipedia.org/wiki/%E5%B9%B3%E4%BB%AE%E5%90%8D_(Unicode%E3%81%AE%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF) - UTF-8カタカナ https://ja.wikipedia.org/wiki/%E7%89%87%E4%BB%AE%E5%90%8D_(Unicode%E3%81%AE%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF) ** ロジック [#b63e5045] - jaconvを使う事にする。入ってないなら、 pip install jaconv - pyperclipを使う。入ってないなら、 pip install pyperclip - ポイントは、一文字ずつ読み込んで処理していること。 - ポイントは、一文字ずつ読み込んで処理していることだが、 ''逆にいうと一部の文字が誤判定を引き起こす可能性がる(特にオノマトペを多用する人は要注意)'' ** 注意点 [#j982d4f8] - ''UTF-8を想定していますので、CP932などを使う場合は先に変換してください。'' - 空白で区切って次々変換できますが、クリップボードにコピーされるのは最後の一件だけです。 * 解決 [#t8b5b4d6] ** ckh.py [#r6551306] #!/usr/bin/env python import jaconv import re import sys import pyperclip _f = False zx = '' if(len(sys.argv) > 1): p1 = re.compile('[\u3041-\u309F]+') # ひらがな p2 = re.compile('[\u30A1-\u30FF]+') # カタカナ for y in sys.argv: if(_f == False): _f = True else: for x in y: if(p1.match(x) != None): z = jaconv.hira2kata(x) elif(p2.match(x) != None): z = jaconv.kata2hira(x) else: z = x zx = zx + z print(zx) pyperclip.copy(zx) zx = "" ** 使い方 [#w2c6f4cc] $ ckh.py 「車に名前をつける趣味はないかな。あえて言えば商品名『スズキ・エブリイ』か ら、エブリイって呼んでるけどさ」 「車ニ名前ヲツケル趣味ハナイカナ。アエテ言エバ商品名『すずき・えぶりい』カラ、えぶりいッテ呼ンデルケドサ」 $