2011-08-02 41 views
5

Tôi muốn chuyển đổi một số văn bản bao gồm một số dấu chấm câu và các ký hiệu toàn chiều rộng sang văn bản thuần túy của Trung Quốc.Cách lọc tiếng Trung (CHỈ tiếng Trung)

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

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

Trả lời

2

Tôi không biết cách nào tốt để tách ký tự Trung Quốc khỏi các chữ cái khác, nhưng bạn có thể phân biệt chữ cái với các ký tự khác. Sử dụng regexes, bạn có thể sử dụng r"\w" (được biên dịch với cờ re.UNICODE nếu bạn đang sử dụng Python 2). Điều đó sẽ bao gồm số cũng như chữ cái, nhưng không bao gồm dấu chấm câu.

unicodedata.category(c) sẽ cho bạn biết loại ký tự c là gì. Chữ Trung Quốc của bạn là "Lo" (chữ cái không có chữ hoa), trong khi dấu chấm câu là "Po".

+0

tks, nhưng python thường xuyên hỗ trợ danh mục unicode? – Dreampuf

+0

@Dreampuf: cụm từ thông dụng? Không xa như tôi biết. Nhưng bạn có thể sử dụng ''' .join (c cho c trong s nếu unicodedata.category (c) .startswith ('L'))' –

+0

cảm ơn bạn! bạn đúng rồi! – Dreampuf

2

thư viện Các Zhon cung cấp cho bạn một danh sách các dấu chấm câu của Trung Quốc: https://pypi.python.org/pypi/zhon

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

này gần những gì bạn muốn. Không chính xác, bởi vì câu bạn cung cấp có chứa một số dấu câu rất không chuẩn, chẳng hạn như ".". Dù sao, tôi nghĩ rằng Zhon có thể hữu ích cho những người khác với một vấn đề tương tự.

+0

Cảm ơn thư viện tuyệt vời của bạn. – Dreampuf

Các vấn đề liên quan