Tôi muốn tạo một từ điển trong đó các từ tiếng Anh trỏ đến bản dịch tiếng Nga và tiếng Pháp.
Làm cách nào để in ra các ký tự unicode trong Python? Ngoài ra, làm cách nào để bạn lưu trữ các ký tự unicode trong một biến?
Tôi muốn tạo một từ điển trong đó các từ tiếng Anh trỏ đến bản dịch tiếng Nga và tiếng Pháp.
Làm cách nào để in ra các ký tự unicode trong Python? Ngoài ra, làm cách nào để bạn lưu trữ các ký tự unicode trong một biến?
Câu trả lời:
Để bao gồm các ký tự Unicode trong mã nguồn Python của bạn, bạn có thể sử dụng các ký tự thoát Unicode trong biểu mẫu \u0123
trong chuỗi của bạn và đặt tiền tố chuỗi ký tự bằng 'u'.
Đây là một ví dụ đang chạy trong bảng điều khiển tương tác Python:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
Các chuỗi được khai báo như thế này là các biến kiểu Unicode, như được mô tả trong tài liệu Python Unicode .
Nếu chạy lệnh trên không hiển thị văn bản chính xác cho bạn, có lẽ thiết bị đầu cuối của bạn không có khả năng hiển thị các ký tự Unicode.
Để biết thông tin về cách đọc dữ liệu Unicode từ một tệp, hãy xem câu trả lời sau:
mystr
? sau đó làm thế nào để in nó?
print your_unicode_characters.encode('utf-8')
In một ký tự unicode trực tiếp từ trình thông dịch python:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Ký tự Unicode u'\u2713'
là một dấu kiểm. Trình thông dịch in dấu kiểm trên màn hình.
In một ký tự unicode từ tập lệnh python:
Đặt cái này vào test.py:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Chạy nó như thế này:
el@apollo:~$ python test.py
here is your checkmark: ✓
Nếu nó không hiển thị dấu kiểm cho bạn, thì vấn đề có thể nằm ở chỗ khác, chẳng hạn như cài đặt đầu cuối hoặc điều gì đó bạn đang làm với chuyển hướng luồng.
Lưu trữ các ký tự unicode trong một tệp:
Lưu cái này vào tệp: foo.py:
#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
import codecs
import sys
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
print(u'e with obfuscation: é')
Chạy nó và chuyển đầu ra vào tệp:
python foo.py > tmp.txt
Mở tmp.txt và nhìn vào bên trong, bạn sẽ thấy:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
Như vậy là bạn đã lưu unicode e với một dấu obfuscation trên nó vào một tệp.
Nếu bạn đang cố gắng print()
Unicode và gặp lỗi codec ascii , hãy xem trang này , TLDR trong đó được thực hiện export PYTHONIOENCODING=UTF-8
trước khi kích hoạt python (biến này kiểm soát chuỗi byte mà bảng điều khiển cố gắng mã hóa dữ liệu chuỗi của bạn). Bên trong, Python3 sử dụng UTF-8 theo mặc định (xem Unicode HOWTO) vì vậy đó không phải là vấn đề; bạn chỉ có thể đặt Unicode trong chuỗi, như đã thấy trong các câu trả lời và nhận xét khác. Sự cố sẽ xảy ra khi bạn thử và đưa dữ liệu này ra bảng điều khiển của mình. Python cho rằng bảng điều khiển của bạn chỉ có thể xử lý ascii. Một số câu trả lời khác nói, "Trước tiên hãy ghi nó vào tệp" nhưng lưu ý rằng chúng chỉ định mã hóa (UTF-8) để làm như vậy (vì vậy, Python không thay đổi bất kỳ điều gì trong văn bản), và sau đó sử dụng một phương thức để đọc tệp tin chỉ xuất ra các byte mà không liên quan đến mã hóa, đó là lý do tại sao điều đó hoạt động.
Trong Python 2, bạn khai báo các chuỗi unicode với a u
, as in u"猫"
và use decode()
andencode()
để dịch sang và từ unicode tương ứng.
Nó khá dễ dàng hơn một chút trong Python 3. Có thể tìm thấy một cái nhìn tổng quan rất tốt ở đây . Bài thuyết trình đó đã làm sáng tỏ rất nhiều điều cho tôi.
Xem xét rằng đây là kết quả tràn ngăn xếp đầu tiên khi google tìm kiếm chủ đề này, nó có đề cập đến tiền tố u
cho chuỗi unicode là tùy chọn trong Python 3. (Ví dụ Python 2 đã được sao chép từ câu trả lời trên cùng)
Python 3 (cả hai đều hoạt động):
print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')
Python 2:
print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Tôi sử dụng Portable winpython trong Windows, nó bao gồm bảng điều khiển IPython QT, tôi có thể đạt được những điều sau.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
trình thông dịch bảng điều khiển của bạn phải hỗ trợ unicode để hiển thị các ký tự unicode.
Chỉ còn một điều nữa chưa được thêm vào
Trong Python 2, nếu bạn muốn in một biến có unicode và sử dụng .format()
, thì hãy thực hiện việc này (đặt chuỗi cơ sở đang được định dạng thành chuỗi unicode với u''
:
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
Thay thế '+' bằng '000' . Ví dụ: 'U + 1F600' sẽ trở thành 'U0001F600' và thêm mã Unicode với "\" và in. Thí dụ:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
Kiểm tra điều này có thể nó sẽ giúp biểu tượng cảm xúc unicode python