3

私は韓国語の文字列を個々の音節に分割しようとしています。したがって、入力は「서울특별시」のような文字列になり、結果は「서」、「울」、「특」、「별」、「시」になります。C ++とPythonの両方で文字列をセグメント化しようとしましたが、結果は一連の?またはそれぞれ空白(ただし、文字列自体は画面に正しく印刷できます)。C ++では、最初に入力文字列をとして初期化しstring korean="서울특별시"、次にaを使用しstring::iteratorて文字列を調べ、個々のコンポーネントを出力しました。Pythonでは、単純なforループを使用しました。

この問題の解決策があるかどうか疑問に思っています。ありがとう。

4

1 に答える 1

1

私は韓国語をまったく知らず、音節への分割についてコメントすることはできませんが、Python2では次のように機能します。

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

出力:

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

uPython 3では、Unicode文字列の場合は必要ありません。

出力は、文字列内の文字のUnicode値です。これは、この場合、文字列が正しく切り取られていることを意味します。私がそれらを印刷した理由reprは、私が使用した端末のフォントがそれらを表すことができないため、repr正方形のボックスが表示されないためです。しかし、これは純粋にレンダリングの問題でreprあり、データが正しいことを示しています。

したがって、音節を識別する方法を論理的に知っている場合はrepr、コードが実際に何をしたかを確認するために使用できます。Unicode NFCは、実際にそれらを識別するための良い候補のように聞こえます(R. Martinho Fernandesに感謝します)。これunicodedata.normalize()は、それを取得する方法です。

于 2013-01-31T11:25:37.407 に答える