Cách đọc tệp utf 8 trong python
Để đọc tệp ở dạng mã hóa Unicode (UTF-8) trong Python, bạn có thể sử dụng hàm Show
Để ghi tệp ở dạng mã hóa Unicode (UTF-8) bằng Python, bạn có thể sử dụng hàm
Xin lưu ý rằng trong ví dụ trên, tệp sẽ được tạo nếu không tồn tại và nếu tệp đã tồn tại, nó sẽ cắt bớt nội dung trước khi viết Chuỗi là một trong những kiểu dữ liệu phổ biến nhất trong Python. Chúng được sử dụng để xử lý dữ liệu văn bản dưới mọi hình thức. Lĩnh vực Xử lý ngôn ngữ tự nhiên được xây dựng dựa trên một số loại xử lý văn bản và chuỗi. Điều quan trọng là phải biết về cách các chuỗi hoạt động trong Python. Các chuỗi thường dễ xử lý khi chúng được tạo thành từ các ký tự ASCII tiếng Anh, nhưng “các vấn đề” xuất hiện khi chúng ta nhập các ký tự không phải ASCII — ngày càng trở nên phổ biến trên thế giới, đặc biệt là. với sự ra đời của biểu tượng cảm xúc, v.v. Nhiều lập trình viên sử dụng 1. dây được làm bằng gì?Trong Python (2 hoặc 3), các chuỗi có thể được biểu diễn bằng byte hoặc điểm mã unicode 2. Unicode và điểm mã unicode là gì?Trong khi đọc các byte từ một tệp, người đọc cần biết ý nghĩa của các byte đó. Vì vậy, nếu bạn viết một tệp JSON và gửi nó cho bạn của mình, bạn của bạn sẽ cần biết cách xử lý các byte trong tệp JSON của bạn. Trong khoảng 20 năm đầu tiên của máy tính, các ký tự tiếng Anh viết hoa và viết thường, một số dấu chấm câu và chữ số là đủ. Tất cả đều được mã hóa thành một danh sách 127 ký hiệu được gọi là ASCII. 7 bit thông tin hoặc 1 byte là đủ để mã hóa mọi ký tự tiếng Anh. Bạn có thể bảo bạn của mình giải mã tệp JSON của bạn bằng mã hóa ASCII và thế là xong — cô ấy sẽ có thể đọc những gì bạn gửi cho cô ấy Điều này thật tuyệt trong vài thập kỷ đầu hoặc lâu hơn, nhưng dần dần chúng tôi nhận ra rằng có nhiều ký tự hơn là ký tự tiếng Anh. Chúng tôi đã thử mở rộng 127 ký tự thành 256 ký tự (thông qua Latin-1 hoặc ISO-8859–1) để tận dụng hết không gian 8 bit — nhưng điều đó là không đủ. Chúng tôi cần một tiêu chuẩn quốc tế mà tất cả chúng tôi đã đồng ý để xử lý hàng trăm, hàng nghìn ký tự không phải tiếng Anh Trong đến Unicode Unicode là tiêu chuẩn quốc tế trong đó ánh xạ các ký tự riêng lẻ và một số duy nhất được duy trì. Kể từ tháng 5 năm 2019, phiên bản Unicode mới nhất là 12. 1 chứa hơn 137 nghìn ký tự bao gồm các tập lệnh khác nhau bao gồm tiếng Anh, tiếng Hindi, tiếng Trung và tiếng Nhật, cũng như các biểu tượng cảm xúc. Mỗi ký tự 137 nghìn này được biểu thị bằng một điểm mã unicode. Vì vậy, các điểm mã unicode đề cập đến các ký tự thực tế được hiển thị 3 trong số các tiêu chuẩn mã hóa phổ biến nhất được xác định bởi Unicode là UTF-8, UTF-16 và UTF-32 Có thể bạn quan tâm3. Mã hóa Unicode UTF-8, UTF-16 và UTF-32 là gì?Bây giờ chúng ta biết rằng Unicode là một tiêu chuẩn quốc tế mã hóa mọi ký tự đã biết thành một số duy nhất. Sau đó, câu hỏi tiếp theo là làm thế nào để chúng ta di chuyển những con số duy nhất này trên internet? . Sử dụng byte thông tin UTF-8. Nó sử dụng 1, 2, 3 hoặc 4 byte để mã hóa mọi điểm mã. Nó tương thích ngược với ASCII. Tất cả các ký tự tiếng Anh chỉ cần 1 byte — khá hiệu quả. Chúng tôi chỉ cần nhiều byte hơn nếu chúng tôi đang gửi các ký tự không phải tiếng Anh UTF-16 là biến 2 hoặc 4 byte. Mã hóa này là tuyệt vời cho văn bản châu Á vì hầu hết nó có thể được mã hóa thành 2 byte mỗi. Nó không tốt cho tiếng Anh vì tất cả các ký tự tiếng Anh cũng cần 2 byte ở đây UTF-32 được cố định 4 byte. Tất cả các ký tự được mã hóa bằng 4 byte nên cần rất nhiều bộ nhớ. Nó không được sử dụng thường xuyên Chúng ta cần phương pháp 4. Loại dữ liệu nào trong Python xử lý các điểm và byte mã Unicode?Như chúng ta đã thảo luận trước đó, trong Python, các chuỗi có thể được biểu diễn bằng byte hoặc điểm mã unicode # strings is by default made of unicode code points0 — là byte~ Và mã hóa mặc định là ASCII. Vì vậy, nếu một tệp đến là các ký tự Cyrillic, Python 2 có thể không thành công vì ASCII sẽ không thể xử lý các ký tự Cyrillic đó. Trong trường hợp này, chúng ta cần nhớ sử dụng # strings is by default made of unicode code points1 trong quá trình đọc tệp. Điều này thật bất tiện 2. Python 3 đã đến và sửa lỗi này. Theo mặc định, các chuỗi vẫn là loại ____20_______ nhưng giờ đây chúng có nghĩa là các điểm mã unicode — chúng tôi mang theo những gì chúng tôi thấy. Nếu chúng tôi muốn lưu trữ các chuỗi loại # strings is by default made of unicode code points0 này trong các tệp, chúng tôi sử dụng loại # strings is by default made of unicode code points4 thay thế. Mã hóa mặc định là UTF-8 thay vì ASCII. Hoàn hảo 5. Bất kỳ ví dụ mã nào để so sánh các loại dữ liệu khác nhau?Vâng, hãy xem “你好” trong tiếng Trung có nghĩa là xin chào. Phải mất 6 byte để lưu trữ chuỗi này được tạo thành từ 2 điểm mã unicode. Hãy lấy ví dụ về hàm popular # strings is by default made of unicode code points5 để xem mọi thứ có thể khác nhau như thế nào trong Python 2 và 3 — và những điều bạn cần lưu ý >>> print(len(“你好”)) # Python 2 - str is bytes Vì vậy, thêm tiền tố vào một # strings is by default made of unicode code points6 trong Python 2 có thể tạo ra sự khác biệt hoàn toàn khiến mã của bạn hoạt động chính xác hay không — điều này có thể gây nhầm lẫn. Python 3 đã sửa lỗi này bằng cách sử dụng các điểm mã unicode theo mặc định — vì vậy, # strings is by default made of unicode code points5 sẽ hoạt động như bạn mong đợi với độ dài bằng 2 trong ví dụ trên Hãy xem thêm các ví dụ trong Python 3 để xử lý các chuỗi # strings is by default made of unicode code points 6. Đó là rất nhiều thông tin. Bạn có thể tóm tắt?Chắc chắn rồi. Hãy xem tất cả những gì chúng tôi đã đề cập cho đến nay một cách trực quan Sơ đồ này đúng với cả Python 2 và Python 3. Chúng tôi có thể nhận được_______2_______8 do Một phương pháp hay là giải mã các byte của bạn theo UTF-8 (hoặc một bộ mã hóa được sử dụng để tạo các byte đó) ngay khi chúng được tải từ một tệp. Chạy quá trình xử lý của bạn trên các điểm mã unicode thông qua mã Python của bạn, sau đó ghi lại thành byte vào một tệp bằng bộ mã hóa UTF-8 cuối cùng. Cái này được gọi là Bánh mì Unicode. Đọc/xem bài nói xuất sắc của Ned Batchelder (@nedbat) về điều này Nếu bạn muốn thêm thông tin về các chuỗi trong Python, vui lòng đề cập trong các nhận xét bên dưới vì nó sẽ giúp ích cho người khác. Điều này kết thúc blog của tôi về hướng dẫn Unicode, UTF-8 và chuỗi. Chúc may mắn trong những khám phá của riêng bạn với văn bản Tái bút, hãy xem podcast mới của tôi. Nó có tên là “The Data Life Podcast”, nơi tôi nói về những chủ đề tương tự. Trong một tập gần đây, tôi đã nói về Tại sao Pandas là Excel mới. Bạn có thể nghe podcast tại đây hoặc bất cứ nơi nào bạn nghe podcast của mình Cách đọc UTFBạn có thể sử dụng pandas. các hàm read_csv() và to_csv() để đọc và ghi tệp CSV bằng nhiều mã hóa khác nhau (e. g. , UTF-8, ASCII, ANSI, ISO) như được định nghĩa trong đối số mã hóa của cả hai hàm.
Công dụng của UTF là gìUTF-8 là một trong những mã hóa được sử dụng phổ biến nhất và Python thường mặc định sử dụng nó . UTF là viết tắt của “Định dạng chuyển đổi Unicode” và '8' có nghĩa là các giá trị 8 bit được sử dụng trong mã hóa. (Cũng có bảng mã UTF-16 và UTF-32, nhưng chúng ít được sử dụng hơn UTF-8. )
UTF thế nàoBộ giải mã UTF8 là gì? . Mỗi ký tự Unicode có thể đọc được bằng cách sử dụng 1-4 byte. UTF-8 là giải mã Unicode phổ biến nhất và được sử dụng bởi phần lớn các ứng dụng và trang web. a variable-length character decoding that can make any Unicode character readable. Each Unicode character is made readable using 1-4 bytes. UTF-8 is the most common Unicode decoding, and is used by a majority of applications and websites.
Có thể UTFMỗi ký tự được đại diện bởi một đến bốn byte. UTF-8 tương thích ngược với ASCII và có thể đại diện cho bất kỳ ký tự Unicode tiêu chuẩn nào. 128 ký tự UTF-8 đầu tiên khớp chính xác với 128 ký tự ASCII đầu tiên (được đánh số 0-127), nghĩa là văn bản ASCII hiện có đã là UTF-8 hợp lệ. |