句読点や全角記号を含むテキストを純粋な中国語のテキストに変換したい。中国語をフィルタリングする方法(中国語のみ)
maybe_re = re.compile("xxxxxxxxxxxxxxxxx") #TODO
print "".join(maybe_re.findall("你好,这只是一些中文文本..,.,全角"))
# I want out
你好这只是一些中文文本全角
句読点や全角記号を含むテキストを純粋な中国語のテキストに変換したい。中国語をフィルタリングする方法(中国語のみ)
maybe_re = re.compile("xxxxxxxxxxxxxxxxx") #TODO
print "".join(maybe_re.findall("你好,这只是一些中文文本..,.,全角"))
# I want out
你好这只是一些中文文本全角
漢字を他の文字と区別するのには良い方法はありませんが、他の文字と区別することはできます。正規表現を使用すると、r"\w"
(Python 2の場合はre.UNICODE
フラグでコンパイルされます)を使用できます。これには、数字だけでなく文字も含まれますが、句読点は含まれません。
unicodedata.category(c)
は、どのような文字cの種類を教えてくれます。あなたの中国語の手紙は "Lo"(手紙なしの手紙)であり、句読点は "Po"です。
Zhonライブラリーは、中国の句読点のリストを提供します:https://pypi.python.org/pypi/zhon
str = re.sub('[%s]' % zhon.unicode.PUNCTUATION, "", "你好,这只是一些中文文本..,.,全角")
これは、あなたが望むほとんど何を行います。あなたが提供する文章には、 "。"のような非常に非標準の句読点が含まれているため、正確ではありません。とにかく、私は、Zhonが同様の問題を持つ他の人にとって役に立つかもしれないと思います。
あなたのクールなライブラリをありがとう。 – Dreampuf
tksですが、Pythonの定期的なサポートのUnicodeカテゴリはありますか? – Dreampuf
@Dreampuf:正規表現ですか?私の知る限りではありません。しかし、unicodedata.category(c).startswith( 'L')の場合は '' '.join(cの場合はc)を使用できます。 –
ありがとう!あなたは正しい! – Dreampuf