- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2024-02-19T16:35:55+09:00","default:yakumo_murakami","yakumo_murakami")
#author("2024-02-19T17:00:05+09:00","default:yakumo_murakami","yakumo_murakami")
[[今さらPython]]
* 主題 [#y8dcc4c1]
ネット小説を書いているのだけど、こういう書き方をする登場人物がいる。
「車ニ名前ヲツケル趣味ハナイカナ。アエテ言エバ商品名『すずき・えぶりい』カラ、えぶりいッテ呼ンデルケドサ」
""これ、意外と入力が面倒くさい。""~
''意外と入力が面倒くさい。''~
普通に変換で入力できないからね……。~
面倒くさいので、pythonで変換してみることにした。
こういう時こそ、気軽なスクリプト言語の出番だ。~
さっそく、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]
** test2.py [#r6551306]
** ckh.py [#r6551306]
!/usr/bin/env python
#!/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):
print(jaconv.hira2kata(x),end="")
z = jaconv.hira2kata(x)
elif(p2.match(x) != None):
print(jaconv.kata2hira(x),end="")
z = jaconv.kata2hira(x)
else:
print(x,end="")
print("")
z = x
zx = zx + z
print(zx)
pyperclip.copy(zx)
zx = ""
** 使い方 [#w2c6f4cc]
test2.py 「車に名前をつける趣味はないかな。あえて言えば商品名『スズキ・エブリイ』か ら、エブリイって呼んでるけどさ」
「車ニ名前ヲツケル趣味ハナイカナ。アエテ言エバ商品名『すずき・えぶりい』カラ、えぶりいッテ呼ンデルケドサ」
$
$ ckh.py 「車に名前をつける趣味はないかな。あえて言えば商品名『スズキ・エブリイ』か ら、エブリイって呼んでるけどさ」
「車ニ名前ヲツケル趣味ハナイカナ。アエテ言エバ商品名『すずき・えぶりい』カラ、えぶりいッテ呼ンデルケドサ」
$