Tôi đang viết một tập lệnh Python chấp nhận các đường dẫn tệp dưới dạng chuỗi, phân tích chúng, nối tên một tên lệnh và xây dựng một danh sách, sau đó được chuyển sang subprocess.Popen[]
để thực thi. Tập lệnh này là để xử lý cả đường dẫn tệp Unix và Windows và cuối cùng nên chạy trên cả hai hệ thống.
Khi tôi chạy cái này dưới Unix, nếu tôi đưa ra một đường dẫn Windows vô tình chứa một ký tự thoát [ví dụ: \Users\Administrator\bin
], Python sẽ giải thích \b
được nhúng là ký tự backspace. Tôi muốn ngăn chặn điều đó xảy ra.
Theo như tôi biết, không có chức năng hoặc phương thức nào để biểu thị một biến chuỗi dưới dạng chuỗi thô. Công cụ sửa đổi
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]0 chỉ hoạt động cho các hằng số chuỗi.
Cho đến nay, lần gần nhất tôi có thể nhận được là:
winpath = "C:\Users\Administrator\bin"
winpath = winpath.replace['\b','\\b']
winpathlist = winpath.split['\\']
Tại thời điểm này, WinPathList nên chứa
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]1, không phải
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]2.
Tôi có thể thêm các cuộc gọi bổ sung vào
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]3 để xử lý các lối thoát khác mà tôi có thể nhận được -
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]4,
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]5,
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6,
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]7,
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]8,
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]9 - nhưng không phải
Learn programming with Finxter!0.
Có một cách nào khác để làm điều này?
Xây dựng vấn đề
Giải pháp 1: repr [] - in mà không diễn giải các ký tự thoát
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]
Giải pháp 2: In chuỗi thô để bỏ qua ý nghĩa đặc biệt của Escape chars
Learn programming with Finxter!
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?
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
Giải pháp 2: In chuỗi thô để bỏ qua ý nghĩa đặc biệt của Escape chars
Giải pháp 3: Lọc ra tất cả các ký tự thoát với String.isalnum []
s = "Learn\tprogramming\nwith\t\tFinxter!" print[repr[s]] # Learn\tprogramming\nwith\t\tFinxter!
Đi đâu từ đây?
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ư
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6,
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]8 và
Learn programming with Finxter!3. 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
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6.
Bạn có thể thấy rằng đầu ra in ý nghĩa đặc biệt của các ký tự thoát:
Giải pháp 2: In chuỗi thô để bỏ qua ý nghĩa đặc biệt của Escape chars
Giải pháp 3: Lọc ra tất cả các ký tự thoát với String.isalnum []
s = r"Learn\tprogramming\nwith\t\tFinxter!" print[s] # Learn\tprogramming\nwith\t\tFinxter
Đi đâu từ đây?
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ư
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6,
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]8 và
Learn programming with Finxter!3. 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
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6.
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?
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ư
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6,
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]8 và
Learn programming with Finxter!3. 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
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6.
s = 'Learn\tprogramming\nwith\t\tFinxter!' s_clean = ''.join[c for c in s if c.isalnum[]] print[s_clean] # LearnprogrammingwithFinxter
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:
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s] # Learn\tprogramming\nwith\t\tFinxter!
8 to dynamically create an iterable of characters and filter out each non-alphanumeric character. Learn more about this method in our full blog guide. - 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à, hãy bỏ qua ý nghĩa đặc biệt của chúng, hãy sử dụng hàm
Learn programming with Finxter!
5 tích hợp trên chuỗiLearn programming with Finxter!
6.
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
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]8 và
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6.
Hàm
Learn programming with Finxter!9 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 gọi nội bộ gọi phương thức
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s] # Learn\tprogramming\nwith\t\tFinxter!0 được xác định theo mặc định cho tất cả các đối tượng.
Đi đâu từ đây?
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ư
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6,
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]8 và
Learn programming with Finxter!3. 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
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6.
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:
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à, hãy bỏ qua ý nghĩa đặc biệt của chúng, hãy sử dụng hàm
Learn programming with Finxter!5 tích hợp trên chuỗi
Learn programming with Finxter!6.
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
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]8 và
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s]6.YES!, 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.
Hàm
Learn programming with Finxter!9 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 gọi nội bộ gọi phương thức
s = "Learn\tprogramming\nwith\t\tFinxter!" print[s] # Learn\tprogramming\nwith\t\tFinxter!0 được xác định theo mặc định cho tất cả các đối tượng.
Tham gia hội thảo trên web miễn phí ngay bây giờ!
Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.
Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer [Nostarch 2020], đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.
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.