Tôi đang làm việc để tải danh sách các ký tự biểu tượng cảm xúc trong tập lệnh python 3.6 đơn giản. Cấu trúc YAML về cơ bản là như sau:Tải các ký tự đặc biệt với PyYaml
-
-
-
script python của tôi trông như thế này:
import yaml
f = open('emojis.yml')
EMOJIS = yaml.load(f)
f.close()
Tôi nhận được ngoại lệ sau đây:
yaml.reader.ReaderError: unacceptable character #x001d: special characters are not allowed in "emojis.yml", position 2
Tôi đã thấy các tùy chọn allow_unicode=True
nhưng điều đó dường như chỉ có sẵn cho yaml.dump. Dường như mọi người gặp sự cố với các vấn đề tương tự trong Python2, nhưng vì tất cả các chuỗi phải là unicode, tôi đang gặp khó khăn trong việc tìm ra lý do tại sao điều này không hoạt động.
Tôi cũng đã thử gói biểu tượng cảm xúc của mình trong dấu ngoặc kép và sử dụng hàm tạo của khách hàng cho 'tag: yaml.org, 2002: str'. Constructor tùy chỉnh của tôi là không bao giờ thậm chí hit có lẽ vì lib yaml là không nhận ra biểu tượng cảm xúc của tôi là có loại chuỗi. Tôi cũng quan sát hành vi tương tự khi tôi xác định biểu tượng cảm xúc của mình trực tiếp dưới dạng chuỗi trong nguồn.
Có cách nào để tải tệp yaml chứa biểu tượng cảm xúc bằng PyYAML không?
Tôi không nghĩ PyYAML hỗ trợ SMP chút nào. –
@ IgnacioVazquez-Abrams, tôi xin lỗi, không có chuyên gia unicode nào. Bởi SMP, bạn có nghĩa là máy bay đa ngôn ngữ bổ sung? SMP có hỗ trợ biểu tượng cảm xúc không? –
@QuinnStearns SMP là [máy bay Unicode bổ sung 1] (https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Overview) và mặt phẳng đó bao gồm [biểu tượng cảm xúc] đó (https: //en.wikipedia. org/wiki/Emoticons_% 28Unicode_block% 29). PyYAML xem xét những thứ không thể in được dựa trên một bài kiểm tra dễ sửa đổi. Sự phát triển chính của PyYAML dừng lại lâu trước khi các biểu tượng cảm xúc được giới thiệu vào năm 2010 (tức là trong Unicode 6.0 trở lên), cũng là lý do PyYAML không hỗ trợ chuẩn YAML 1.2 mới nhất (2009). Cách giải quyết đơn giản là xác định lại quy tắc đối sánh char unicode có thể in. – Anthon