2016-12-08 5 views
0

文字列入力からハングル、英語、数字を抽出しようとしています。pythonはハングルを処理していません

hangul = re.compile('[^a-zA-Z0-9\u3131-\u3163\uac00-\ud7a3]+') 
s = u'abcd 가나다라 1234' 
print hangul.sub('', s) 

これは私をu'abcd1234' 与える

なぜそれが\ uac00- \ ud7a3無視するのですか?

答えて

0

re.compileのUnicode文字列を使用します。そうでない場合、\u3163はUnicodeエスケープとして扱われません。

.sub''も必須ではありませんが、Unicodeである必要があります。 Python 2ではUnicodeへの暗黙的な変換があり、Python 3ではそれが必要です。

#coding:utf8 
import re 
hangul = re.compile(u'[^a-zA-Z0-9\u3131-\u3163\uac00-\ud7a3]+') 
s = u'abcd 가나다라 1234' 
print hangul.sub(u'', s) 

出力:

abcd가나다라1234 
+0

ありがとうございます!できます!! – nolsigan

0

私はpythonのjamoための開発者です。 Python 3を使用している場合は 、次にjamo.is_hangul_charなどの関数を使用できます。それ以外の場合は、source codeを使用して(あなたの正規表現に少数の韓国語の文字が欠落している)手助けすることができます。

旧式のハングルjamoの表示文字のいくつかを見逃したくない場合は、3131-\u3163\u3165-\u318Eを使用して、すべてのハングル互換性のあるjamoをマッチさせます。現代の表示文字だけが心配な場合は、\u3131-\u314E\u314F-\u3163を使用して、すべての現代のハングル互換のjamoにマッチさせます。

関連する問題