Hướng dẫn how do you escape backslashes in python? - làm thế nào để bạn thoát khỏi dấu gạch chéo ngược trong python?

Trên trang này: Nhận xét với #, chuỗi đa dòng với "" "" "" ", in nhiều đối tượng, dấu gạch chéo ngược" \ "là ký tự thoát, '\ t', '\ n', ' '\\'.

Video hướng dẫn


Python 3 Changrint (x, y) thay vì in x, yprint(x,y) instead of print x, y

Tóm tắt video

  • Như đã nêu trong các hướng dẫn trước đó, hàm in () cho Python hiển thị ngay lập tức một chuỗi đã cho sau khi lệnh được thực thi. Để chỉ định một chuỗi cho chức năng in để hiển thị, hãy bao quanh nó trong các trình điều khiển đơn ('' ') hoặc các trình điều khiển kép (""). Cả hai tùy chọn đều có sẵn để bạn vẫn có thể sử dụng báo giá trong chuỗi của mình nếu cần. Ví dụ: In ("Bạn thế nào hôm nay?")
  • Nếu ký hiệu pound (#) được đặt trước lệnh hoặc bất kỳ loại chuỗi ký tự nào, lệnh sẽ xuất hiện bằng màu đỏ và python sẽ bỏ qua nó trong quá trình thực thi mã. Điều này có thể được sử dụng trong Python để cung cấp các nhận xét hữu ích cho những người xem mã của bạn hoặc "tắt" một số dòng mã nhất định để kiểm tra các lỗi.comments to those looking at your code, or to "turn off" certain lines of code in order to test for bugs.
  • Bao quanh một chuỗi với các trình điều khiển ba đôi ("" "" "" ") cho phép bạn có bất kỳ sự kết hợp nào của trích dẫn và ngắt dòng trong một chuỗi và python vẫn sẽ diễn giải nó như một thực thể duy nhất.

Tìm hiểu thêm

Ngược lại, tiền tố một ký tự đặc biệt với "\" biến nó thành một ký tự thông thường. Điều này được gọi là "trốn thoát". Ví dụ: "\ '" là ký tự trích dẫn duy nhất. 'Đó là mưa' do đó là một chuỗi hợp lệ và tương đương với "trời mưa". Tương tự như vậy, '"' có thể được thoát:" \ "hello \" "là một chuỗi bắt đầu và kết thúc bằng ký tự trích dẫn kép theo nghĩa đen. Cuối cùng," \ "có thể được sử dụng để thoát khỏi chính nó:" \\ " .

>>> print('It\'s raining')
It's raining 
>>> 'It\'s raining'          # Same string specified differently
"It's raining" 
>>> print("\"hello\"")
"hello" 
>>> print('"\\" is the backslash')   # Try with "\" instead of "\\"
"\" is the backslash 

Có hàng tấn các hàm tiện dụng được xác định trên các chuỗi, được gọi là các phương thức chuỗi. Tìm hiểu về những người trên nền tảng và cả về thao tác trường hợp trong hướng dẫn này. Hướng dẫn Phần 2 này bao gồm các phương thức chuỗi để tìm nơi đặt một chuỗi con cụ thể, và cũng để kiểm tra xem điều kiện có giữ cho mỗi ký tự hay không.

Khi bạn cảm thấy thoải mái với các danh sách (sắp tới), bạn cũng nên kiểm tra sự chia tách và tham gia chuỗi.

  • Thực tiễn

Tôi có mã này:

import os
path = os.getcwd()
final = path +'\xulrunner.exe ' + path + '\application.ini'
print(final)

Tôi muốn đầu ra như:

C:\Users\me\xulrunner.exe C:\Users\me\application.ini

Nhưng thay vào đó tôi gặp một lỗi giống như:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape

Tôi không muốn các dấu gạch chéo ngược được hiểu là trình tự thoát, nhưng là những dấu gạch chéo ngược. Tôi làm nó như thế nào?


Lưu ý rằng nếu chuỗi chỉ nên chứa dấu gạch chéo ngược hơn - nói chung hơn, nên có một số lượng ngược lẻ ở cuối - thì không thể sử dụng chuỗi RAW. Vui lòng sử dụng làm thế nào tôi có thể nhận được một chuỗi với một dấu gạch chéo ngược trong đó? để đóng các câu hỏi đang yêu cầu một chuỗi chỉ với một dấu gạch chéo ngược trong đó. Sử dụng làm thế nào để viết chuỗi chữ bằng Python mà không cần phải thoát khỏi chúng? Khi câu hỏi cụ thể về việc muốn tránh sự cần thiết của các chuỗi thoát.cannot be used. Please use How can I get a string with a single backslash in it? to close questions that are asking for a string with just a backslash in it. Use How to write string literals in python without having to escape them? when the question is specifically about wanting to avoid the need for escape sequences.

Karl Knechtel

59.5K10 Huy hiệu vàng86 Huy hiệu bạc133 Huy hiệu Đồng10 gold badges86 silver badges133 bronze badges

Hỏi ngày 1 tháng 8 năm 2010 lúc 2:19Aug 1, 2010 at 2:19

4

Để trả lời trực tiếp câu hỏi của bạn, đặt

>>> print('apple\torange')
apple	orange 
>>> print('apple\norange')
apple
orange 
1 trước chuỗi.

final= path + r'\xulrunner.exe ' + path + r'\application.ini'

Nhưng một giải pháp tốt hơn sẽ là

>>> print('apple\torange')
apple	orange 
>>> print('apple\norange')
apple
orange 
2:

final = os.path.join(path, 'xulrunner.exe') + ' ' + \
         os.path.join(path, 'application.ini')

(Backslash ở đó đang thoát khỏi một dòng mới, nhưng bạn có thể đặt toàn bộ điều trên một dòng nếu bạn muốn)

Tôi sẽ đề cập rằng bạn có thể sử dụng các dấu gạch chéo phía trước trong các đường dẫn tệp và Python sẽ tự động chuyển đổi chúng thành dấu phân cách chính xác (dấu gạch chéo ngược trên Windows) khi cần thiết. Vì thế

final = path + '/xulrunner.exe ' + path + '/application.ini'

nên làm việc. Nhưng vẫn thích sử dụng

>>> print('apple\torange')
apple	orange 
>>> print('apple\norange')
apple
orange 
2 vì điều đó cho thấy rõ những gì bạn đang cố gắng làm.

Đã trả lời ngày 1 tháng 8 năm 2010 lúc 2:22Aug 1, 2010 at 2:22

David Zdavid zDavid Z

125K26 Huy hiệu vàng249 Huy hiệu bạc275 Huy hiệu Đồng26 gold badges249 silver badges275 bronze badges

2

Bạn có thể thoát khỏi chém. Sử dụng

>>> print('apple\torange')
apple	orange 
>>> print('apple\norange')
apple
orange 
4 và bạn chỉ nhận được một dấu gạch chéo.

Đã trả lời ngày 1 tháng 8 năm 2010 lúc 5:22Aug 1, 2010 at 5:22

Avacariuavacariuavacariu

2.6943 huy hiệu vàng24 Huy hiệu bạc25 Huy hiệu đồng3 gold badges24 silver badges25 bronze badges

0

Một cách tiếp cận đơn giản (và được cho là dễ đọc hơn) là sử dụng định dạng và thay thế chuỗi RAW như vậy:

import os
path = os.getcwd()
final = r"{0}\xulrunner.exe {0}\application.ini".format(path)
print(final)

hoặc sử dụng phương thức đường dẫn hệ điều hành (và vi mô cho khả năng đọc):

>>> print('apple\torange')
apple	orange 
>>> print('apple\norange')
apple
orange 
0

Đã trả lời ngày 16 tháng 3 năm 2021 lúc 21:27Mar 16, 2021 at 21:27

Chris Ruddchris RuddChris Rudd

5676 Huy hiệu bạc12 Huy hiệu Đồng6 silver badges12 bronze badges