#概要
自作のローマ字カナ読み関数作るために、ローマ字とカナ1モウラの対応(例:"kya"="キャ")を定義した辞書を作りました。
一部、筆者仕様の定義になっているため、ご注意ください。
GitHub:
https://github.com/JiroShimaya/RomajiDict/
#コード
直接手で書いてもよいのですが、拗音の処理など、繰り返し処理で書ける部分が多そうだったので、Pythonでobjectを生成したあと、jsonとして出力しました。
generator.py
import json
def generate():
obj = {}
kana = {
"k":"カキクケコ",
"ky":["キ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"kw":["ク"+v for v in "ヮ/ィ/ゥ/ェ/ォ".split("/")],
"s":"サシスセソ",
"sy":["シ"+v for v in "ャ//ュ/ェ/ョ".split("/")],
"sh":["シ"+v for v in "ャ//ュ/ェ/ョ".split("/")],
"sw":["ス"+v for v in "ヮ/ィ/ゥ/ェ/ォ".split("/")],
"t":"タチツテト",
"ty":["チ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"th":["テ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"ts":["ツ"+v for v in "ァ/ィ//ェ/ォ".split("/")],
"c":"カシクセコ",
"ch":["チ"+v for v in "ャ//ュ/ェ/ョ".split("/")],
"cy":["チ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"q":["ク"+v for v in "ァ/ィ//ェ/ォ".split("/")],
"n":"ナニヌネノ",
"ny":["ニ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"nw":["ヌ"+v for v in "ヮ/ィ/ゥ/ェ/ォ".split("/")],
"h":"ハヒフヘホ",
"hy":["ヒ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"f":["フ"+v for v in "ァ/ィ//ェ/ォ".split("/")],
"fy":["フ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"m":"マミムメモ",
"my":["ミ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"y":"ヤ/イ/ユ/イェ/ヨ".split("/"),
"r":"ラリルレロ",
"ry":["リ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"w":"ワ/ウィ/ウ/ウェ/ウォ".split("/"), #ウォはヲでも可
"g":"ガギグゲゴ",
"gy":["ギ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"z":"ザジズゼゾ",
"zy":["ジ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"j":["ジ"+v for v in "ャ//ュ/ェ/ョ".split("/")],
"jy":["ジ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"d":"ダヂヅデド",
"dh":["デ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"dy":["ヂ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"b":"バビブベボ",
"by":["ビ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"v":"ヴァ/ヴィ/ヴ/ヴェ/ヴォ".split("/"),
"vy":["ヴ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"p":"パピプペポ",
"py":["ピ"+v for v in "ャ/ィ/ュ/ェ/ョ".split("/")],
"x":"ァィゥェォ",
"xy":"ャィュェョ",
"l":"ァィゥェォ",
"ly":"ャィュェョ",
}
obj.update({r:k for r,k in zip("aiueo","アイウエオ")})
for c, col in kana.items():
obj.update({c+v:k for v, k in zip("aiueo",col)})
obj.update({k+"tu":"ッ" for k in "lx"})
obj.update({k+"tsu":"ッ" for k in "lx"})
return obj
if __name__=="__main__":
PATH = "./ramaji_dict.json"
obj = generate()
with open(PATH,"w") as f:
json.dump(obj, f, ensure_ascii=False,indent=2)
#出力ファイル
romaji_dict.json
{
"a": "ア",
"i": "イ",
"u": "ウ",
"e": "エ",
"o": "オ",
"ka": "カ",
"ki": "キ",
"ku": "ク",
"ke": "ケ",
"ko": "コ",
"kya": "キャ",
"kyi": "キィ",
"kyu": "キュ",
"kye": "キェ",
"kyo": "キョ",
"kwa": "クヮ",
"kwi": "クィ",
"kwu": "クゥ",
"kwe": "クェ",
"kwo": "クォ",
"sa": "サ",
"si": "シ",
"su": "ス",
"se": "セ",
"so": "ソ",
"sya": "シャ",
"syi": "シ",
"syu": "シュ",
"sye": "シェ",
"syo": "ショ",
"sha": "シャ",
"shi": "シ",
"shu": "シュ",
"she": "シェ",
"sho": "ショ",
"swa": "スヮ",
"swi": "スィ",
"swu": "スゥ",
"swe": "スェ",
"swo": "スォ",
"ta": "タ",
"ti": "チ",
"tu": "ツ",
"te": "テ",
"to": "ト",
"tya": "チャ",
"tyi": "チィ",
"tyu": "チュ",
"tye": "チェ",
"tyo": "チョ",
"tha": "テャ",
"thi": "ティ",
"thu": "テュ",
"the": "テェ",
"tho": "テョ",
"tsa": "ツァ",
"tsi": "ツィ",
"tsu": "ツ",
"tse": "ツェ",
"tso": "ツォ",
"ca": "カ",
"ci": "シ",
"cu": "ク",
"ce": "セ",
"co": "コ",
"cha": "チャ",
"chi": "チ",
"chu": "チュ",
"che": "チェ",
"cho": "チョ",
"cya": "チャ",
"cyi": "チィ",
"cyu": "チュ",
"cye": "チェ",
"cyo": "チョ",
"qa": "クァ",
"qi": "クィ",
"qu": "ク",
"qe": "クェ",
"qo": "クォ",
"na": "ナ",
"ni": "ニ",
"nu": "ヌ",
"ne": "ネ",
"no": "ノ",
"nya": "ニャ",
"nyi": "ニィ",
"nyu": "ニュ",
"nye": "ニェ",
"nyo": "ニョ",
"nwa": "ヌヮ",
"nwi": "ヌィ",
"nwu": "ヌゥ",
"nwe": "ヌェ",
"nwo": "ヌォ",
"ha": "ハ",
"hi": "ヒ",
"hu": "フ",
"he": "ヘ",
"ho": "ホ",
"hya": "ヒャ",
"hyi": "ヒィ",
"hyu": "ヒュ",
"hye": "ヒェ",
"hyo": "ヒョ",
"fa": "ファ",
"fi": "フィ",
"fu": "フ",
"fe": "フェ",
"fo": "フォ",
"fya": "フャ",
"fyi": "フィ",
"fyu": "フュ",
"fye": "フェ",
"fyo": "フョ",
"ma": "マ",
"mi": "ミ",
"mu": "ム",
"me": "メ",
"mo": "モ",
"mya": "ミャ",
"myi": "ミィ",
"myu": "ミュ",
"mye": "ミェ",
"myo": "ミョ",
"ya": "ヤ",
"yi": "イ",
"yu": "ユ",
"ye": "イェ",
"yo": "ヨ",
"ra": "ラ",
"ri": "リ",
"ru": "ル",
"re": "レ",
"ro": "ロ",
"rya": "リャ",
"ryi": "リィ",
"ryu": "リュ",
"rye": "リェ",
"ryo": "リョ",
"wa": "ワ",
"wi": "ウィ",
"wu": "ウ",
"we": "ウェ",
"wo": "ウォ",
"ga": "ガ",
"gi": "ギ",
"gu": "グ",
"ge": "ゲ",
"go": "ゴ",
"gya": "ギャ",
"gyi": "ギィ",
"gyu": "ギュ",
"gye": "ギェ",
"gyo": "ギョ",
"za": "ザ",
"zi": "ジ",
"zu": "ズ",
"ze": "ゼ",
"zo": "ゾ",
"zya": "ジャ",
"zyi": "ジィ",
"zyu": "ジュ",
"zye": "ジェ",
"zyo": "ジョ",
"ja": "ジャ",
"ji": "ジ",
"ju": "ジュ",
"je": "ジェ",
"jo": "ジョ",
"jya": "ジャ",
"jyi": "ジィ",
"jyu": "ジュ",
"jye": "ジェ",
"jyo": "ジョ",
"da": "ダ",
"di": "ヂ",
"du": "ヅ",
"de": "デ",
"do": "ド",
"dha": "デャ",
"dhi": "ディ",
"dhu": "デュ",
"dhe": "デェ",
"dho": "デョ",
"dya": "ヂャ",
"dyi": "ヂィ",
"dyu": "ヂュ",
"dye": "ヂェ",
"dyo": "ヂョ",
"ba": "バ",
"bi": "ビ",
"bu": "ブ",
"be": "ベ",
"bo": "ボ",
"bya": "ビャ",
"byi": "ビィ",
"byu": "ビュ",
"bye": "ビェ",
"byo": "ビョ",
"va": "ヴァ",
"vi": "ヴィ",
"vu": "ヴ",
"ve": "ヴェ",
"vo": "ヴォ",
"vya": "ヴャ",
"vyi": "ヴィ",
"vyu": "ヴュ",
"vye": "ヴェ",
"vyo": "ヴョ",
"pa": "パ",
"pi": "ピ",
"pu": "プ",
"pe": "ペ",
"po": "ポ",
"pya": "ピャ",
"pyi": "ピィ",
"pyu": "ピュ",
"pye": "ピェ",
"pyo": "ピョ",
"xa": "ァ",
"xi": "ィ",
"xu": "ゥ",
"xe": "ェ",
"xo": "ォ",
"xya": "ャ",
"xyi": "ィ",
"xyu": "ュ",
"xye": "ェ",
"xyo": "ョ",
"la": "ァ",
"li": "ィ",
"lu": "ゥ",
"le": "ェ",
"lo": "ォ",
"lya": "ャ",
"lyi": "ィ",
"lyu": "ュ",
"lye": "ェ",
"lyo": "ョ",
"ltu": "ッ",
"xtu": "ッ",
"ltsu": "ッ",
"xtsu": "ッ"
}