Xử lý tiếng Việt trong python

#!/usr/bin/python
# -*- coding: utf8 -*-

s = raw_input("nhập vào 1 câu: ")
d={"UPPER CASE":0, "LOWER CASE":0}
for c in s:
    if c.isupper():
        d["UPPER CASE"]+=1
    elif c.islower():
        d["LOWER CASE"]+=1
    else:
        pass
print "Chữ hoa:", d["UPPER CASE"]
print "Chữ thường:", d["LOWER CASE"]
s = s.upper()
print s

==> s mình nhập vào là “Tui là Bill Nguyễn”, kết quả là “TUI Là BILL NGUYễN”. Chữ a và ê không lên hoa được. Mình thử dùng cách gán trực tiếp s = u"Tui là Bill Nguyễn" ngay từ đầu thì ra ok. Vậy mọi người cho mình hỏi trường hợp này không thể dùng u trước s được (thay vì string, vì dùng vậy nó sẽ in ra tất cả j sau u) thì làm cách nào để không phải gán chết string (để người dùng chủ động nhập string vào). Cảm ơn

Đổi sang dùng Python 3.

3 Likes

Bạn đang dùng python2 thì cần encode/decode UTF8 nhé.

>>> print 'ê'.decode('utf-8').upper()
Ê

Hoặc có thể tham khảo tại link này: http://viet.jnlp.org/kien-thuc-co-ban-ve-xu-ly-ngon-ngu-tu-nhien/xu-ly-tieng-viet-bang-python-1

2 Likes

11 posts were split to a new topic: Hiển thị kí tự tiếng Việt chính xác mà không hiển thị mã Unicode

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?