Tôi có một tệp được mã hóa UTF-8 có chứa nhiều dòng như
\x02I don't like \x0307bananas\x03.\x02 Hey, how are you doing? You called?
Làm cách nào để đọc các dòng của tệp đó vào một danh sách, giải mã tất cả các chuỗi thoát? Tôi đã thử mã bên dưới:
with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
Nhưng nó in dòng mà không giải mã các ký tự thoát.
\x02I don't like \x0307bananas\x03\x02
.
Xây dựng vấn đề
Python có các nhân vật Escape Escape đặc biệt, bắt đầu với bản tóm tắt duy nhất như
with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
2, with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
3 và with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
4. Nếu bạn in một chuỗi với các ký tự thoát, Python sẽ in ý nghĩa đặc biệt, ví dụ, một dòng mới cho ký tự mới with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
2.s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]
Bạn có thể thấy rằng đầu ra in ý nghĩa đặc biệt của các ký tự thoát:
Learn programming with Finxter!
Làm thế nào để in chuỗi ở dạng ban đầu mà không diễn giải các ký tự thoát?
Đây là những gì chúng ta muốn:
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s] # Learn\tprogramming\nwith\t\tFinxter!
Giải pháp 1: repr [] - in mà không diễn giải các ký tự thoát
Nếu bạn muốn in các ký tự thoát trong một chuỗi mà không diễn giải chúng, tức là, bỏ qua ý nghĩa đặc biệt của chúng, hãy sử dụng hàm
with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
6 tích hợp trên chuỗi with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
7.Ví dụ sau đây cho thấy cách đầu ra in không bị ảnh hưởng bởi các ký tự thoát ra python in mà không có ý nghĩa đặc biệt của các ký tự thoát
with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
3 và with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
2.s = "Learn\tprogramming\nwith\t\tFinxter!" print[repr[s]] # Learn\tprogramming\nwith\t\tFinxter!
Hàm
\x02I don't like \x0307bananas\x03\x020 tích hợp Python, trả về biểu diễn chuỗi tiêu chuẩn của đối tượng được cung cấp. Hàm nội bộ gọi phương thức
\x02I don't like \x0307bananas\x03\x021 được xác định theo mặc định cho tất cả các đối tượng.
Bạn có thể tìm hiểu thêm về chức năng trong bài viết blog chi tiết của tôi và hướng dẫn video sau:
Chức năng Python repr [] - Hướng dẫn hữu ích với ví dụ
Giải pháp 2: In chuỗi thô để bỏ qua ý nghĩa đặc biệt của Escape chars
Ngoài ra, bạn có thể in một chuỗi thô
\x02I don't like \x0307bananas\x03\x022 để in chuỗi mà không cần diễn giải các ký tự thoát. Ví dụ: câu lệnh
\x02I don't like \x0307bananas\x03\x023 sẽ chỉ cần in chuỗi RAW
\x02I don't like \x0307bananas\x03\x024.
s = r"Learn\tprogramming\nwith\t\tFinxter!" print[s] # Learn\tprogramming\nwith\t\tFinxter
Giải pháp này thực sự giống như giải pháp đầu tiên vì Python nội bộ gọi hàm
\x02I don't like \x0307bananas\x03\x025 trên chuỗi thô.
Tuy nhiên, điều gì sẽ xảy ra nếu bạn thực sự muốn xóa tất cả các ký tự thoát khỏi đầu ra chuỗi?
Giải pháp 3: Lọc ra tất cả các ký tự thoát với String.isalnum []
Đi đâu từ đây?
Xây dựng vấn đề
s = 'Learn\tprogramming\nwith\t\tFinxter!' s_clean = ''.join[c for c in s if c.isalnum[]] print[s_clean] # LearnprogrammingwithFinxter
Python có các nhân vật Escape Escape đặc biệt, bắt đầu với bản tóm tắt duy nhất như
with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
2, with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
3 và with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
4. Nếu bạn in một chuỗi với các ký tự thoát, Python sẽ in ý nghĩa đặc biệt, ví dụ, một dòng mới cho ký tự mới with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
2.- Bạn có thể thấy rằng đầu ra in ý nghĩa đặc biệt của các ký tự thoát:
- Làm thế nào để in chuỗi ở dạng ban đầu mà không diễn giải các ký tự thoát?
\x02I don't like \x0307bananas\x03\x02
9 to dynamically create an iterable of characters and filter out each non-alphanumeric character. Learn more about this method in our full blog guide. - Đây là những gì chúng ta muốn:
Giải pháp 1: repr [] - in mà không diễn giải các ký tự thoát
Nếu bạn muốn in các ký tự thoát trong một chuỗi mà không diễn giải chúng, tức là, bỏ qua ý nghĩa đặc biệt của chúng, hãy sử dụng hàm
with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
6 tích hợp trên chuỗi with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
7.
Đi đâu từ đây?
Xây dựng vấn đề
Python có các nhân vật Escape Escape đặc biệt, bắt đầu với bản tóm tắt duy nhất như
with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
2, with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
3 và with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
4. Nếu bạn in một chuỗi với các ký tự thoát, Python sẽ in ý nghĩa đặc biệt, ví dụ, một dòng mới cho ký tự mới with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
2.Bạn có thể thấy rằng đầu ra in ý nghĩa đặc biệt của các ký tự thoát:
Làm thế nào để in chuỗi ở dạng ban đầu mà không diễn giải các ký tự thoát?
Đây là những gì chúng ta muốn:
Giải pháp 1: repr [] - in mà không diễn giải các ký tự thoátYES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.
Nếu bạn muốn in các ký tự thoát trong một chuỗi mà không diễn giải chúng, tức là, bỏ qua ý nghĩa đặc biệt của chúng, hãy sử dụng hàm
with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
6 tích hợp trên chuỗi with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
7.Ví dụ sau đây cho thấy cách đầu ra in không bị ảnh hưởng bởi các ký tự thoát ra python in mà không có ý nghĩa đặc biệt của các ký tự thoát
with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
3 và with codecs.open[file, 'r', encoding='utf-8'] as q:
quotes = q.readlines[]
print[str[random.choice[quotes]]]
2.Hàm
\x02I don't like \x0307bananas\x03\x020 tích hợp Python, trả về biểu diễn chuỗi tiêu chuẩn của đối tượng được cung cấp. Hàm nội bộ gọi phương thức
\x02I don't like \x0307bananas\x03\x021 được xác định theo mặc định cho tất cả các đối tượng.
Bạn có thể tìm hiểu thêm về chức năng trong bài viết blog chi tiết của tôi và hướng dẫn video sau:
Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.