#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 「車に名前をつける趣味はないかな。あえて言えば商品名『スズキ・エブリイ』か ら、エブリイって呼んでるけどさ」
 「車ニ名前ヲツケル趣味ハナイカナ。アエテ言エバ商品名『すずき・えぶりい』カラ、えぶりいッテ呼ンデルケドサ」
 $

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS