使用韩语输入法编辑器 (IME),可以键入 버리
+ 어
,它将自动变为 버려
。
有没有办法在 Python 中以编程方式执行此操作?
>>> x, y = '버리', '어'
>>> z = '버려'
>>> ord(z[-1])
47140
>>> ord(x[-1]), ord(y)
(47532, 50612)
有没有办法计算 47532 + 50612 -> 47140?
还有一些例子:
가보 + 아 -> 가봐
끝나 + ㄹ -> 끝날
最佳答案
我是韩国人。首先,如果您键入 버리어
+ 어
,它将变为 버리어
而不是 버려
。 버려
是버리어
的缩写,不会自动生成。同样,가보한
不能在输入时自动变为 가봐
。
其次,相比之下,끝나
+ ㄹ
变为 끝날
因为 나
没有 jongseong(종성)。请注意,韩文的一个字符由 choseong(초성)、jungseong(중성) 和 jongseong 组成。 choseong 和 jongseong 是辅音,jungseong 是元音。查看更多信息 Wikipedia .所以只有当打字时没有 jongseong 时(比如 끝나),它才有可能有 jongseong(ㄹ)。
如果你想把 버리
+ 어
变成 버려
,你应该实现一些韩语语法,特别是对于这种情况,缩写中城。例如ㅣ
+ ㅓ
= ㅕ
, ㅗ
+ ㅏ
= ㅘ
你提供的。 한글 맞춤법 chapter 4. section 5 (我现在找不到英文页面)这样定义缩写。这是可能的,但不是那么容易,尤其是对于非韩国人。
接下来,如果你想要的只是将 끝나
+ ㄹ
转换为 끝날
,这可能是一个相对容易的工作,因为有'可以处理 choseong、jungseong、jongseong 的组合和分解的库。如果是 Python,我找到了 hgtk .您可以这样尝试(非实用代码):
# hgtk methods take one character at a time
cjj1 = hgtk.letter.decompose('나') # ('ㄴ', 'ㅏ', '')
cjj2 = hgtk.letter.decompose('ㄹ') # ('ㄹ', '', '')
if cjj1[2]) == '' and cjj2[1]) == '':
cjj = (cjj1[0], cjj1[1], cjj2[0])
cjj2 = None
不过,如果没有适当的韩文知识,将很难完成。
关于python - 有没有办法以编程方式将韩文 unicode 合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479575/