2011-08-02 13 views
5

Quiero convertir algunos textos que incluyen algunos signos de puntuación y símbolos de ancho completo en texto chino puro.Cómo filtrar chino (SOLO chino)

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

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

Respuesta

2

no sé de cualquier buena manera de separar los caracteres chinos de otras cartas, pero se puede distinguir las letras de otros personajes. Usando expresiones regulares, puede usar r"\w" (compilado con el indicador re.UNICODE si está en Python 2). Eso incluirá números y letras, pero no puntuación.

unicodedata.category(c) le dirá qué tipo de personaje es c. Sus letras chinas son "Lo" (letra sin mayúscula), mientras que la puntuación es "Po".

+0

tks, pero ¿python admite regularmente la categoría Unicode? – Dreampuf

+0

@Dreampuf: expresiones regulares? No tan lejos como sé. Pero puede usar ''' .join (c para c en s si unicodedata.category (c) .startswith ('L'))' –

+0

¡gracias! ¡tienes razón! – Dreampuf

2

biblioteca La Zhon le proporciona una lista de los signos de puntuación chinos: https://pypi.python.org/pypi/zhon

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

Esto casi lo que quiere. No exactamente, porque la oración que proporciona contiene algunos signos de puntuación no estándar, como ".". De todos modos, creo que Zhon podría ser útil para otros con un problema similar.

+0

Gracias por tu genial biblioteca. – Dreampuf

Cuestiones relacionadas