将韩语单词划分为单个音节 - C ++ / Python

时间:2013-01-31 11:13:56

标签: c++ python string encoding tokenize

我正在尝试将韩语字符串细分为单个音节。 所以输入将是一个字符串,如“서울특별시”和结果“서”,“울”,“특”,“별”,“시”。 我已尝试用C ++和Python来分割字符串,但结果是一系列的?或者分别为白色空格(但是字符串本身可以在屏幕上正确打印)。 在c ++中,我首先将输入字符串初始化为string korean="서울특별시",然后使用string::iterator遍历字符串并打印每个单独的组件。 在Python中,我刚刚使用了一个简单的for循环。

我想知道是否有这个问题的解决方案。感谢。

1 个答案:

答案 0 :(得分:1)

我根本不懂韩语,也不能评论音节的划分,但在Python 2中,以下是有效的:

# -*- coding: utf-8 -*- 
print(repr(u"서울특별시"))
print(repr(u"서울특별시"[0]))

输出:

u'\uc11c\uc6b8\ud2b9\ubcc4\uc2dc'
u'\uc11c'

在Python 3中,Unicode字符串不需要u

输出是字符串中字符的unicode值,这意味着在这种情况下字符串已被正确删除。我用repr打印它们的原因是我使用的终端中的字体不能代表它们,所以没有repr我只看到方框。但这纯粹是一个渲染问题,repr表明数据是正确的。

因此,如果您从逻辑上知道如何识别音节,那么您可以使用repr来查看代码实际执行的操作。 Unicode NFC听起来像是真正识别它们的一个很好的候选者(感谢R. Martinho Fernandes),而unicodedata.normalize()是达到这个目标的方法。