2011-08-02 17 views
5

Bazı noktalama ve saf Çinli metne tam genişlikli semboller dahil bazı metin dönüştürmek istiyor.Nasıl filtrelemek için çince (SADECE Çince)

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

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

cevap

2

diğer mektuplarından Çince karakterler ayırmak için herhangi iyi bir yol bilmiyorum, ama diğer karakterler mektuplar ayırt edebilir. Düzenli ifadeleri kullanarak, r"\w" (Python 2 üzerindeyseniz re.UNICODE bayrağıyla derlenmiş) kullanabilirsiniz. Bu sayılar yanı sıra harfler, ancak noktalama işaretleri içermez.

unicodedata.category(c) olan karakter c ne tür söyleyecektir. Noktalama işareti "Po" iken Çince harflerin "Lo" (harfsiz harf) vardır.

+0

tks, ancak python düzenli destek unicode kategorisi var mı? – Dreampuf

+0

@Dreampuf: düzenli ifadeler? Bildiğim kadarıyla değil. Ama '' '.join kullanabilirsiniz (c için unicodedata.category (c) .startswith (' L ')' s) ' –

+0

teşekkür ederim! Haklısın! – Dreampuf

2

Zhon kütüphane Çinli noktalama işaretlerinden bir listesini sağlar: https://pypi.python.org/pypi/zhon

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

Bu istediğiniz neredeyse şeyi öğrenirsin. Tam olarak değil, sağladığınız cümle, "." gibi standart olmayan noktalama işaretleri içerir. Her neyse, Zhon'un benzer bir konuda başkalarına yararlı olabileceğini düşünüyorum.

+0

Serin kütüphaneniz için teşekkürler. – Dreampuf

İlgili konular