-
-
Save ObjectsCountries/e9639c075fe420be2e2ae1023448bed5 to your computer and use it in GitHub Desktop.
@yabashe.bsky.social 's romaji-to-kana bash script rewritten in python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
def romaji_to_kana(romaji: str) -> str: | |
punctuation: dict[str, str] = { | |
".": "。", | |
"?": "?", | |
"!": "!", | |
":": ":", | |
"-": "ー", | |
"~": "〜", | |
"=": "゠", | |
",": "、", | |
"[": "「", | |
"]": "」", | |
"q[": "『", | |
"q]": "』", | |
'qq"': "〟", | |
'q"': "〝", | |
} | |
hiragana_alternatives: dict[str, str] = { | |
"qtsu": "っ", | |
"qya": "ゃ", | |
"qyu": "ゅ", | |
"qyo": "ょ", | |
"qka": "ゕ", | |
"qke": "ゖ", | |
"qwa": "ゎ", | |
"qji": "ぢ", | |
"qjji": "っぢ", | |
"qja": "ぢゃ", | |
"qju": "ぢゅ", | |
"qjo": "ぢょ", | |
"qjja": "っぢゃ", | |
"qjju": "っぢゅ", | |
"qjjo": "っぢょ", | |
"qa": "ぁ", | |
"qi": "ぃ", | |
"qu": "ぅ", | |
"qe": "ぇ", | |
"qo": "ぉ", | |
} | |
hiragana_geminates: dict[str, str] = { | |
"kkya": "っきゃ", | |
"kkyu": "っきゅ", | |
"kkyo": "っきょ", | |
"ssha": "っしゃ", | |
"sshu": "っしゅ", | |
"ssho": "っしょ", | |
"ccha": "っちゃ", | |
"cchu": "っちゅ", | |
"ccho": "っちょ", | |
"nnya": "っにゃ", | |
"nnyu": "っにゅ", | |
"nnyo": "っにょ", | |
"hhya": "っひゃ", | |
"hhyu": "っひゅ", | |
"hhyo": "っひょ", | |
"mmya": "っみゃ", | |
"mmyu": "っみゅ", | |
"mmyo": "っみょ", | |
"rrya": "っりゃ", | |
"rryu": "っりゅ", | |
"rryo": "っりょ", | |
"ggya": "っぎゃ", | |
"ggyu": "っぎゅ", | |
"ggyo": "っぎょ", | |
"jja": "っじゃ", | |
"jju": "っじゅ", | |
"jjo": "っじょ", | |
"bbya": "っびゃ", | |
"bbyu": "っびゅ", | |
"bbyo": "っびょ", | |
"ppya": "っぴゃ", | |
"ppyu": "っぴゅ", | |
"ppyo": "っぴょ", | |
"kka": "っか", | |
"kki": "っき", | |
"kku": "っく", | |
"kke": "っけ", | |
"kko": "っこ", | |
"ssa": "っさ", | |
"sshi": "っし", | |
"ssu": "っす", | |
"sse": "っせ", | |
"sso": "っそ", | |
"tta": "った", | |
"cchi": "っち", | |
"ttsu": "っつ", | |
"tte": "って", | |
"tto": "っと", | |
"nna": "っな", | |
"nni": "っに", | |
"nnu": "っぬ", | |
"nne": "っね", | |
"nno": "っの", | |
"hha": "っは", | |
"hhi": "っひ", | |
"ffu": "っふ", | |
"hhe": "っへ", | |
"hho": "っほ", | |
"mma": "っま", | |
"mmi": "っみ", | |
"mmu": "っむ", | |
"mme": "っめ", | |
"mmo": "っも", | |
"rra": "っら", | |
"rri": "っり", | |
"rru": "っる", | |
"rre": "っれ", | |
"rro": "っろ", | |
"wwa": "っわ", | |
"wwi": "っゐ", | |
"wwe": "っゑ", | |
"wwo": "っを", | |
"gga": "っが", | |
"ggi": "っぎ", | |
"ggu": "っぐ", | |
"gge": "っげ", | |
"ggo": "っご", | |
"zza": "っざ", | |
"jji": "っじ", | |
"zzu": "っず", | |
"zze": "っぜ", | |
"zzo": "っぞ", | |
"dda": "っだ", | |
"ddzu": "っづ", | |
"dde": "っで", | |
"ddo": "っど", | |
"bba": "っば", | |
"bbi": "っび", | |
"bbu": "っぶ", | |
"bbe": "っべ", | |
"bbo": "っぼ", | |
"ppa": "っぱ", | |
"ppi": "っぴ", | |
"ppu": "っぷ", | |
"ppe": "っぺ", | |
"ppo": "っぽ", | |
"vvu": "っゔ", | |
"yya": "っや", | |
"yyu": "っゆ", | |
"yyo": "っよ", | |
} | |
hiragana_normal = { | |
"kya": "きゃ", | |
"kyu": "きゅ", | |
"kyo": "きょ", | |
"sha": "しゃ", | |
"shu": "しゅ", | |
"sho": "しょ", | |
"cha": "ちゃ", | |
"chu": "ちゅ", | |
"cho": "ちょ", | |
"nya": "にゃ", | |
"nyu": "にゅ", | |
"nyo": "にょ", | |
"hya": "ひゃ", | |
"hyu": "ひゅ", | |
"hyo": "ひょ", | |
"mya": "みゃ", | |
"myu": "みゅ", | |
"myo": "みょ", | |
"rya": "りゃ", | |
"ryu": "りゅ", | |
"ryo": "りょ", | |
"gya": "ぎゃ", | |
"gyu": "ぎゅ", | |
"gyo": "ぎょ", | |
"ja": "じゃ", | |
"ju": "じゅ", | |
"jo": "じょ", | |
"bya": "びゃ", | |
"byu": "びゅ", | |
"byo": "びょ", | |
"pya": "ぴゃ", | |
"pyu": "ぴゅ", | |
"pyo": "ぴょ", | |
"ka": "か", | |
"ki": "き", | |
"ku": "く", | |
"ke": "け", | |
"ko": "こ", | |
"sa": "さ", | |
"shi": "し", | |
"su": "す", | |
"se": "せ", | |
"so": "そ", | |
"ta": "た", | |
"chi": "ち", | |
"tsu": "つ", | |
"te": "て", | |
"to": "と", | |
"na": "な", | |
"ni": "に", | |
"nu": "ぬ", | |
"ne": "ね", | |
"no": "の", | |
"ha": "は", | |
"hi": "ひ", | |
"fu": "ふ", | |
"he": "へ", | |
"ho": "ほ", | |
"ma": "ま", | |
"mi": "み", | |
"mu": "む", | |
"me": "め", | |
"mo": "も", | |
"ra": "ら", | |
"ri": "り", | |
"ru": "る", | |
"re": "れ", | |
"ro": "ろ", | |
"wa": "わ", | |
"wi": "ゐ", | |
"we": "ゑ", | |
"wo": "を", | |
"ga": "が", | |
"gi": "ぎ", | |
"gu": "ぐ", | |
"ge": "げ", | |
"go": "ご", | |
"za": "ざ", | |
"ji": "じ", | |
"zu": "ず", | |
"ze": "ぜ", | |
"zo": "ぞ", | |
"da": "だ", | |
"dzu": "づ", | |
"de": "で", | |
"do": "ど", | |
"ba": "ば", | |
"bi": "び", | |
"bu": "ぶ", | |
"be": "べ", | |
"bo": "ぼ", | |
"pa": "ぱ", | |
"pi": "ぴ", | |
"pu": "ぷ", | |
"pe": "ぺ", | |
"po": "ぽ", | |
"vu": "ゔ", | |
"ya": "や", | |
"yu": "ゆ", | |
"yo": "よ", | |
"n": "ん", | |
"a": "あ", | |
"i": "い", | |
"u": "う", | |
"e": "え", | |
"o": "お", | |
} | |
katakana_alternatives: dict[str, str] = { | |
"QTSU": "ッ", | |
"QYA": "ャ", | |
"QYU": "ュ", | |
"QYO": "ョ", | |
"QKA": "ヵ", | |
"QKE": "ヶ", | |
"QWA": "ヮ", | |
"QWI": "ウィ", | |
"QWE": "ウェ", | |
"QWO": "ウォ", | |
"QWU": "ウゥ", | |
"QJI": "ヂ", | |
"QJJI": "ッヂ", | |
"QJA": "ヂャ", | |
"QJJA": "ッヂャ", | |
"QJU": "ヂュ", | |
"QJJU": "ッヂュ", | |
"QJO": "ヂョ", | |
"QJJO": "ッヂョ", | |
"QA": "ァ", | |
"QI": "ィ", | |
"QU": "ゥ", | |
"QE": "ェ", | |
"QO": "ォ", | |
} | |
katakana_geminates: dict[str, str] = { | |
"KKYA": "ッキャ", | |
"KKYU": "ッキュ", | |
"KKYO": "ッキョ", | |
"SSHA": "ッシャ", | |
"SSHU": "ッシュ", | |
"SSHO": "ッショ", | |
"CCHA": "ッチャ", | |
"CCHU": "ッチュ", | |
"CCHO": "ッチョ", | |
"NNYA": "ッニャ", | |
"NNYU": "ッニュ", | |
"NNYO": "ッニョ", | |
"HHYA": "ッヒャ", | |
"HHYU": "ッヒュ", | |
"HHYO": "ッヒョ", | |
"MMYA": "ッミャ", | |
"MMYU": "ッミュ", | |
"MMYO": "ッミョ", | |
"RRYA": "ッリャ", | |
"RRYU": "ッリュ", | |
"RRYO": "ッリョ", | |
"GGYA": "ッギャ", | |
"GGYU": "ッギュ", | |
"GGYO": "ッギョ", | |
"JJA": "ッジャ", | |
"JJU": "ッジュ", | |
"JJO": "ッジョ", | |
"BBYA": "ッビャ", | |
"BBYU": "ッビュ", | |
"BBYO": "ッビョ", | |
"PPYA": "ッピャ", | |
"PPYU": "ッピュ", | |
"PPYO": "ッピョ", | |
"KKA": "ッカ", | |
"KKI": "ッキ", | |
"KKU": "ック", | |
"KKE": "ッケ", | |
"KKO": "ッコ", | |
"SSA": "ッサ", | |
"SSHI": "ッシ", | |
"SSU": "ッス", | |
"SSE": "ッセ", | |
"SSO": "ッソ", | |
"TTA": "ッタ", | |
"CCHI": "ッチ", | |
"TTSU": "ッツ", | |
"TTE": "ッテ", | |
"TTO": "ット", | |
"NNA": "ッナ", | |
"NNI": "ッニ", | |
"NNU": "ッヌ", | |
"NNE": "ッネ", | |
"NNO": "ッノ", | |
"HHA": "ッハ", | |
"HHI": "ッヒ", | |
"FFU": "ッフ", | |
"HHE": "ッヘ", | |
"HHO": "ッホ", | |
"MMA": "ッマ", | |
"MMI": "ッミ", | |
"MMU": "ッム", | |
"MME": "ッメ", | |
"MMO": "ッモ", | |
"YYA": "ッヤ", | |
"YYU": "ッユ", | |
"YYE": "ッエ", | |
"YYO": "ッヨ", | |
"RRA": "ッラ", | |
"RRI": "ッリ", | |
"RRU": "ッル", | |
"RRE": "ッレ", | |
"RRO": "ッロ", | |
"WWA": "ッワ", | |
"WWI": "ッヰ", | |
"WWE": "ッヱ", | |
"WWO": "ッヲ", | |
"GGA": "ッガ", | |
"GGI": "ッギ", | |
"GGU": "ッグ", | |
"GGE": "ッゲ", | |
"GGO": "ッゴ", | |
"ZZA": "ッザ", | |
"JJI": "ッジ", | |
"ZZU": "ッズ", | |
"ZZE": "ッゼ", | |
"ZZO": "ッゾ", | |
"DDA": "ッダ", | |
"DDZU": "ッヅ", | |
"DDE": "ッデ", | |
"DDO": "ッド", | |
"BBA": "ッバ", | |
"BBI": "ッビ", | |
"BBU": "ッブ", | |
"BBE": "ッベ", | |
"BBO": "ッボ", | |
"PPA": "ッパ", | |
"PPI": "ッピ", | |
"PPU": "ップ", | |
"PPE": "ッペ", | |
"PPO": "ッポ", | |
"VVA": "ッヴァ", | |
"VVI": "ッヴィ", | |
"VVU": "ッヴ", | |
"VVE": "ッヴェ", | |
"VVO": "ッヴォ", | |
"FFA": "ッファ", | |
"FFI": "ッフィ", | |
"FFE": "ッフェ", | |
"FFO": "ッフォ", | |
"DDI": "ッディ", | |
"DDU": "ッドゥ", | |
"TTI": "ッティ", | |
"TTU": "ッテゥ", | |
} | |
katakana_normal: dict[str, str] = { | |
"KYA": "キャ", | |
"KYU": "キュ", | |
"KYO": "キョ", | |
"SHA": "シャ", | |
"SHU": "シュ", | |
"SHO": "ショ", | |
"CHA": "チャ", | |
"CHU": "チュ", | |
"CHO": "チョ", | |
"NYA": "ニャ", | |
"NYU": "ニュ", | |
"NYO": "ニョ", | |
"HYA": "ヒャ", | |
"HYU": "ヒュ", | |
"HYO": "ヒョ", | |
"MYA": "ミャ", | |
"MYU": "ミュ", | |
"MYO": "ミョ", | |
"RYA": "リャ", | |
"RYU": "リュ", | |
"RYO": "リョ", | |
"GYA": "ギャ", | |
"GYU": "ギュ", | |
"GYO": "ギョ", | |
"JA": "ジャ", | |
"JU": "ジュ", | |
"JO": "ジョ", | |
"BYA": "ビャ", | |
"BYU": "ビュ", | |
"BYO": "ビョ", | |
"PYA": "ピャ", | |
"PYU": "ピュ", | |
"PYO": "ピョ", | |
"KA": "カ", | |
"KI": "キ", | |
"KU": "ク", | |
"KE": "ケ", | |
"KO": "コ", | |
"SA": "サ", | |
"SHI": "シ", | |
"SU": "ス", | |
"SE": "セ", | |
"SO": "ソ", | |
"TA": "タ", | |
"CHI": "チ", | |
"TSU": "ツ", | |
"TE": "テ", | |
"TO": "ト", | |
"NA": "ナ", | |
"NI": "ニ", | |
"NU": "ヌ", | |
"NE": "ネ", | |
"NO": "ノ", | |
"HA": "ハ", | |
"HI": "ヒ", | |
"FU": "フ", | |
"HE": "ヘ", | |
"HO": "ホ", | |
"MA": "マ", | |
"MI": "ミ", | |
"MU": "ム", | |
"ME": "メ", | |
"MO": "モ", | |
"YA": "ヤ", | |
"YU": "ユ", | |
"YE": "エ", | |
"YO": "ヨ", | |
"RA": "ラ", | |
"RI": "リ", | |
"RU": "ル", | |
"RE": "レ", | |
"RO": "ロ", | |
"WA": "ワ", | |
"WI": "ヰ", | |
"WE": "ヱ", | |
"WO": "ヲ", | |
"GA": "ガ", | |
"GI": "ギ", | |
"GU": "グ", | |
"GE": "ゲ", | |
"GO": "ゴ", | |
"ZA": "ザ", | |
"JI": "ジ", | |
"ZU": "ズ", | |
"ZE": "ゼ", | |
"ZO": "ゾ", | |
"DA": "ダ", | |
"DZU": "ヅ", | |
"DE": "デ", | |
"DO": "ド", | |
"BA": "バ", | |
"BI": "ビ", | |
"BU": "ブ", | |
"BE": "ベ", | |
"BO": "ボ", | |
"PA": "パ", | |
"PI": "ピ", | |
"PU": "プ", | |
"PE": "ペ", | |
"PO": "ポ", | |
"VA": "ヴァ", | |
"VI": "ヴィ", | |
"VU": "ヴ", | |
"VE": "ヴェ", | |
"VO": "ヴォ", | |
"FA": "ファ", | |
"FI": "フィ", | |
"FE": "フェ", | |
"FO": "フォ", | |
"DI": "ディ", | |
"DU": "ドゥ", | |
"TI": "ティ", | |
"TU": "テゥ", | |
"N": "ン", | |
"A": "ア", | |
"I": "イ", | |
"U": "ウ", | |
"E": "エ", | |
"O": "オ", | |
} | |
all_dicts: list[dict[str, str]] = [ | |
punctuation, | |
hiragana_alternatives, | |
hiragana_geminates, | |
hiragana_normal, | |
katakana_alternatives, | |
katakana_geminates, | |
katakana_normal, | |
] | |
kana: str = romaji | |
for dict in all_dicts: | |
for romaji_item, kana_item in dict.items(): | |
kana = kana.replace(romaji_item, kana_item) | |
return kana | |
if __name__ == "__main__": | |
romaji: str = input("Enter a romaji string to convert to kana: ") | |
print(f"{romaji} in kana is: {romaji_to_kana(romaji)}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment