Tôi có các chuỗi đa ngôn ngữ bao gồm cả hai ngôn ngữ sử dụng khoảng trắng làm dấu phân tách từ (tiếng Anh, tiếng Pháp, v.v.) và các ngôn ngữ không (tiếng Trung, tiếng Nhật, tiếng Hàn). Với một chuỗi như vậy, tôi muốn tách phần tiếng Anh/tiếng Pháp/vv thành các từ bằng cách sử dụng khoảng trống làm dấu phân tách và tách phần Trung Quốc/Nhật Bản/Hàn Quốc thành các ký tự riêng lẻ.Python: bất kỳ cách nào để thực hiện việc chia tách "lai"() này trên các chuỗi đa ngôn ngữ (ví dụ: tiếng Trung và tiếng Anh)?
Và tôi muốn đặt tất cả các thành phần được phân tách đó vào danh sách.
Một số ví dụ có lẽ sẽ làm rõ điều này:
Trường hợp 1: Tiếng Anh chỉ chuỗi. Trường hợp này rất dễ dàng:
>>> "I love Python".split()
['I', 'love', 'Python']
Trường hợp 2: Trung Quốc chỉ chuỗi:
>>> list(u"我爱蟒蛇")
[u'\u6211', u'\u7231', u'\u87d2', u'\u86c7']
Trong trường hợp này tôi có thể biến các chuỗi vào một danh sách các chữ Hán. Nhưng trong danh sách tôi nhận được các biểu diễn unicode:
[u'\u6211', u'\u7231', u'\u87d2', u'\u86c7']
Làm cách nào để hiển thị ký tự thực tế thay vì mã unicode? Một cái gì đó như:
['我', '爱', '蟒', '蛇']
??
Trường hợp 3: Một sự pha trộn tiếng Anh & Trung Quốc:
Tôi muốn biến một chuỗi đầu vào như
"我爱Python"
và biến nó thành một danh sách như thế này:
['我', '爱', 'Python']
Có thể làm điều gì đó như vậy không?
Thật không may, có một misfeature trong hiện tại của Python 're' mô-đun ngăn cản' re.split() 'tách thành các kết quả có độ dài bằng không: http://stackoverflow.com/questions/2713060/why-doesnt-pythons-re-split-split-on-zero-length -match - do đó bạn không thể sử dụng các biểu thức chính quy trong Python cho điều này trực tiếp. –
Hàn Quốc sử dụng khoảng trắng để tách từ. – Leovt