Tôi đang gặp sự cố khi chỉ định chuỗi unicode làm tên cho một tệp có tên. Đây hoạt động:được đặt têntuple với chuỗi unicode là tên
a = collections.namedtuple("test", "value")
và điều này không:
b = collections.namedtuple("βαδιζόντων", "value")
tôi nhận được lỗi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.4/collections/__init__.py", line 370, in namedtuple
result = namespace[typename]
KeyError: 'βαδιζόντων'
Tại sao là trường hợp? Tài liệu nói, "Python 3 cũng hỗ trợ sử dụng các ký tự Unicode trong mã định danh" và khóa là unicode hợp lệ?
Something tôi nhận thấy: Nó hoạt động tốt nếu tôi bỏ qua '' ó''. Có vẻ như một lỗi đối với tôi. – pmos
Thú vị - Tôi nên tự mình thử nghiệm. ó là ký tự duy nhất từ khối unicode "Greek Extended", vì vậy điều này có thể có liên quan. Nhưng nó vẫn sẽ không đồng ý với những gì tài liệu nói. – Thomas
Sau khi kiểm tra chặt chẽ hơn, những gì xảy ra là, đối với một số lý do, '' 'ó''' là' '' \ XE1 \ xbd \ xb9''' trong file nguồn UTF-8 mã hóa, nhưng biến thành'' '\ xcf \ x8c''' trong mã được tạo bởi '' namedtuple'' để tạo ra lớp của nó. Điều này chắc chắn có vẻ giống như một lỗi. – pmos