Làm thế nào để bạn bỏ qua lỗi unicode trong python?
Đây là bài viết phải đọc đối với những người thường xuyên xử lý các tệp Unicode (áp dụng cho cả các bảng mã khác) trong công việc hàng ngày của họ. Xử lý các tệp Unicode với tư cách là một học viên xử lý ngôn ngữ tự nhiên là một cơn ác mộng, đặc biệt nếu bạn đang sử dụng hệ điều hành Windows. Hãy tưởng tượng sự thất vọng khi bạn gặp lỗi trong quá trình mã hóa hoặc giải mã chẳng hạn như Show
UnicodeEncodeError: 'mbcs' codec can't decode characters in positionUnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position Hầu hết thời gian, những lỗi như vậy không đủ thông tin trừ khi bạn là người kỳ cựu trong lĩnh vực này. Bạn có thể hỏi tại sao chúng ta cần mã hóa và giải mã các ký tự. Hãy bắt đầu với một lời giải thích đơn giản về Unicode. Dựa trên tài liệu chính thức về python, Unicode (Bộ ký tự được mã hóa chung) là một đặc điểm kỹ thuật nhằm liệt kê mọi ký tự được sử dụng bởi ngôn ngữ của con người và cung cấp cho mỗi ký tự mã duy nhất của riêng nó. Các thông số kỹ thuật Unicode liên tục được sửa đổi và cập nhật để thêm các ngôn ngữ và ký hiệu mới Do đó, mã hóa và giải mã phục vụ như một cách để ánh xạ các ký tự từ văn bản sang byte hoặc ngược lại. Điều này cho phép chúng tôi chuyển chúng giữa các máy tính và sử dụng chúng trong cuộc sống hàng ngày của chúng tôi. Nó trở nên phức tạp hơn khi bạn có các bộ hệ điều hành khác nhau. Ngoài ra, các ngôn ngữ khác nhau có bộ ký tự riêng chỉ có thể hiển thị dưới một số phông chữ nhất định. Để đơn giản, hãy coi nó giống như dịch một ký tự nước ngoài sang một ký tự mà máy móc hiểu được. Trong bài viết này, chúng ta sẽ khám phá một số phương pháp có thể được sử dụng để xử lý các tệp Unicode trong Python. Hãy bắt đầu với các chế độ có sẵn và mã hóa tiêu chuẩn Đọc hoặc ghi tệp thông qua trình quản lý ngữ cảnhCách an toàn nhất để mở tệp là thông qua trình quản lý ngữ cảnh bằng cách sử dụng câu lệnh with. Nó sẽ tự động đóng tệp cho chúng tôi ngăn chặn mọi sự cố có thể phát sinh Chế độ mặc định là Đoạn mã trên sẽ ghi đè và cắt bớt tệp. Trong một số trường hợp, bạn có thể thích sử dụng chế độ
Bạn có thể kết hợp một số chế độ. , đối với quyền truy cập đọc-ghi nhị phân, chế độ Mã hóa tiêu chuẩn trong PythonĐể chỉ định mã hóa trong Python, bạn chỉ cần chuyển vào một đối số khác trong quá trình khởi tạo trình quản lý ngữ cảnh. Bạn phải chỉ định nó bất cứ khi nào bạn đang đọc hoặc viết các ký tự Unicode. Ví dụ sau đây cho thấy cách thích hợp để nối văn bản Unicode vào một tệp hiện có Nếu bạn không chắc nên sử dụng mã hóa nào, chỉ cần nhập Kiểm tra loại mã hóa qua Notepad++Cá nhân, tôi thích sử dụng Notepad ++ hơn để xem nội dung tệp. Nếu bạn mở tệp bằng Notepad++, bạn có thể thấy loại mã hóa được sử dụng ở dưới cùng bên phải của giao diện người dùng Một tệp ví dụ đã sử dụng mã hóa UTF-8. Hình ảnh của tác giảBạn có thể sửa đổi mã hóa thông qua menu Mã hóa. Nó chấp nhận một loạt các mã hóa được sử dụng phổ biến nhất Hình ảnh hiển thị menu thả xuống khi nhấp vào menu mã hóa. Hình ảnh của tác giảNếu bạn đã từng gặp sự cố không thể chuyển đổi tệp sang mã hóa khác hoặc không đọc được một số mã hóa nhất định mặc dù bạn đã chỉ định chính xác, bạn có thể thử phương pháp ngu ngốc nhưng hiệu quả sau đây
Hầu hết thời gian, điều này sẽ tự động chuyển đổi tất cả các ký tự thành mã hóa mới. Xin lưu ý rằng có thể mất dữ liệu nếu không thể chuyển đổi ký tự dựa trên mã hóa mới Xử lý các ký tự trong một mã hóa không xác địnhNếu bạn từng rơi vào trường hợp không xác định được mã hóa và các ký tự hóa ra là một thứ gì đó không xác định, bạn có thể thử sửa đổi đối số lỗi để giải quyết vấn đề Đối số lỗi đề cập đến cách xử lý lỗi mã hóa và giải mã. Xin lưu ý rằng đối số này không thể được sử dụng ở chế độ nhị phân. Các trình xử lý lỗi có sẵn là
Hiển thị các ký tự Unicode trong dấu nhắc lệnhNếu bạn đang chạy dấu nhắc lệnh trong hệ điều hành Windows, nó sẽ gặp sự cố hiển thị ký tự Unicode hầu hết thời gian. hóa ra các ký tự vô nghĩa giống như hình dưới đây Để giải quyết vấn đề này, chúng tôi cần thay đổi cài đặt thành phông chữ chính xác
Mở đường dẫn tệp có ký tự Unicode — áp dụng cho read_csv qua mô-đun pandasPhần này hơi phức tạp, đặc biệt khi bạn đang sử dụng một số mô-đun Python chẳng hạn như gấu trúc. Giả sử bạn có đường dẫn tệp sau bằng ngôn ngữ không phải tiếng Anh file_path = 'C:\path\to\数据分析\data.csv' Cố gắng đọc tệp qua read_csv sẽ gây ra lỗi đơn giản vì đường dẫn tệp chứa các ký tự Unicode. Đây không phải là vấn đề nếu bạn đang sử dụng hàm open() tích hợp sẵn trong Python. Để giải quyết vấn đề này, trước tiên chúng ta cần mở tệp, sau đó chuyển tệp đó vào hàm read_csv Phần kết luận Hãy tóm tắt lại những gì chúng tôi đã đề cập trong hướng dẫn này. Đầu tiên, chúng tôi đã học được tầm quan trọng của việc sử dụng trình quản lý ngữ cảnh (có câu lệnh) khi đọc và ghi tệp. Chúng tôi đã tiếp xúc với danh sách các chế độ có sẵn và mã hóa tiêu chuẩn có thể được sử dụng trong Python. Bây giờ chúng ta đã biết sử dụng một trình soạn thảo văn bản hiện có như Notepad++ để cung cấp cho chúng ta cái nhìn thoáng qua về mã hóa và cấu trúc của tệp đầu vào. Nếu có bất kỳ ký tự nào có mã hóa không xác định, chúng tôi có thể xử lý ký tự đó thông qua đối số lỗi trong quá trình khởi tạo. Đối với người dùng Windows, có một tùy chọn sửa đổi phông chữ trong dấu nhắc lệnh để hiển thị đúng văn bản Unicode. Cuối cùng, chúng tôi đã học cách mở tệp trước khi sử dụng mô-đun pandas để đọc bất kỳ tập dữ liệu nào. cám ơn vì đã đọc và chúc một ngày tốt lành Lỗi thoát unicode trong Python là gì?Khi chúng ta sử dụng một chuỗi như vậy làm tham số cho bất kỳ chức năng nào, có khả năng xảy ra lỗi. Lỗi như vậy được gọi là lỗi Unicode trong Python. Chúng tôi gặp lỗi như vậy vì bất kỳ ký tự nào sau chuỗi thoát Unicode (“ \u ”) tạo ra lỗi, đây là lỗi điển hình trên cửa sổ .
Làm cách nào để chuyển đổi các ký tự unicode thành chuỗi trong Python?type(title) == unicode và type(title. mã hóa ('utf-8')) == str. . Điều này sẽ chỉ hoạt động trên windows. . Điều này bị hỏng nếu nội dung của chuỗi thực sự là unicode, không chỉ các ký tự ascii trong chuỗi unicode |