2011-08-02 72 views
5

我想將一些包含標點符號和全角符號的文本轉換爲純中文文本。如何過濾中文(僅限中文)

maybe_re = re.compile("xxxxxxxxxxxxxxxxx") #TODO 
print "".join(maybe_re.findall("你好,這只是一些中文文本..,.,全角")) 

# I want out 
你好這只是一些中文文本全角 

回答

2

我不知道的分離從其他字母字符中國什麼好辦法,但你可以區別於其他字符的字母。使用正則表達式,您可以使用r"\w"(如果您使用的是Python 2,則使用re.UNICODE標誌進行編譯)。這將包括數字和字母,但不包括標點符號。

unicodedata.category(c)會告訴你c是什麼類型的字符。你的中文字母是「Lo」(無字母的字母),而標點符號是「Po」。

+0

tks,但python常規支持unicode類別? – Dreampuf

+0

@Dreampuf:正則表達式?據我所知,並不是。但是你可以使用'''.join(c用於c中的s,如果是unicodedata.category(c).startswith('L'))' –

+0

謝謝!你是對的! – Dreampuf

2

的周佛海庫爲您提供中國標點符號列表:https://pypi.python.org/pypi/zhon

str = re.sub('[%s]' % zhon.unicode.PUNCTUATION, "", "你好,這只是一些中文文本..,.,全角") 

但這幾乎你想要什麼。不完全是,因爲您提供的句子包含一些非標準的標點符號,如「。」。無論如何,我認爲Zhon可能對有類似問題的其他人有用。

+0

感謝您的酷庫。 – Dreampuf

相關問題