Hướng dẫn python don t escape backslash - python không thoát dấu gạch chéo ngược

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.

Hướng dẫn python don t escape backslash - python không thoát dấu gạch chéo ngược

Karl Knechtel

59.4K10 Huy hiệu vàng86 Huy hiệu bạc132 Huy hiệu đồng10 gold badges86 silver badges132 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

C:\Users\me\xulrunner.exe C:\Users\me\application.ini
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à

C:\Users\me\xulrunner.exe C:\Users\me\application.ini
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

C:\Users\me\xulrunner.exe C:\Users\me\application.ini
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

Hướng dẫn python don t escape backslash - python không thoát dấu gạch chéo ngược

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

C:\Users\me\xulrunner.exe C:\Users\me\application.ini
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.6843 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):

import os

def add_cwd(path):
    return os.path.join( os.getcwd(), path )

xulrunner = add_cwd("xulrunner.exe")
inifile = add_cwd("application.ini")
# in production you would use xulrunner+" "+inifile
# but the purpose of this example is to show a version where you could use any character
# including backslash
final = r"{} {}".format( xulrunner, inifile )
print(final)

Đã 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

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

Làm cách nào để vô hiệu hóa các ký tự thoát trong Python?

Video hướng dẫn

Hướng dẫn python don t escape backslash - python không thoát dấu gạch chéo ngược

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

  • Bạn có thể chỉ định nhiều chuỗi với hàm in (). Chỉ cần tách chúng ra bằng dấu phẩy ',', và chúng sẽ được in với một khoảng trống ở giữa:

    & nbsp;________số 8

  • Trong các chuỗi Python, dấu gạch chéo ngược "\" là một nhân vật đặc biệt, còn được gọi là nhân vật "Escape". Nó được sử dụng để thể hiện các ký tự khoảng trắng nhất định: "\ t" là một tab, "\ n" là một dòng mới và "\ r" là một sự trở lại vận chuyển.the backslash "\" is a special character, also called the "escape" character. It is used in representing certain whitespace characters: "\t" is a tab, "\n" is a newline, and "\r" is a carriage return.

    & nbsp;________số 8

  • Trong các chuỗi Python, dấu gạch chéo ngược "\" là một nhân vật đặc biệt, còn được gọi là nhân vật "Escape". Nó được sử dụng để thể hiện các ký tự khoảng trắng nhất định: "\ t" là một tab, "\ n" là một dòng mới và "\ r" là một sự trở lại vận chuyển.

    & nbsp;________số 8

  • Trong các chuỗi Python, dấu gạch chéo ngược "\" là một nhân vật đặc biệt, còn được gọi là nhân vật "Escape". Nó được sử dụng để thể hiện các ký tự khoảng trắng nhất định: "\ t" là một tab, "\ n" là một dòng mới và "\ r" là một sự trở lại vận chuyển.
  • >>> print('apple\torange')
    apple	orange 
    >>> print('apple\norange')
    apple
    orange 
    

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ó:" \\ " .

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

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

Làm cách nào để bỏ qua dấu gạch chéo ngược trong Python?

Để bỏ qua các chuỗi thoát trong chuỗi, chúng tôi tạo chuỗi thành "chuỗi thô" bằng cách đặt "r" trước chuỗi.make the string as "raw string" by placing "r" before the string.

Làm cách nào để vô hiệu hóa các ký tự thoát trong Python?

Để biến một chuỗi bình thường thành một chuỗi thô, tiền tố chuỗi (trước khi trích dẫn) bằng R hoặc R. Đây là phương pháp được lựa chọn để khắc phục vấn đề trình tự thoát này.prefix the string (before the quote) with an r or R. This is the method of choice for overcoming this escape sequence problem.

Làm thế nào để bạn xử lý một dấu gạch chéo trong Python?

Trong Python, dấu gạch chéo ngược (\) là một nhân vật đặc biệt.Nếu bạn sử dụng dấu gạch chéo ngược ở phía trước của một nhân vật khác, nó sẽ thay đổi ý nghĩa của nhân vật đó.Ví dụ, T là một nhân vật theo nghĩa đen.Nhưng nếu bạn sử dụng ký tự dấu gạch chéo ngược ở phía trước chữ T, nó sẽ trở thành ký tự tab (\ t).If you use the backslash in front of another character, it changes the meaning of that character. For example, the t is a literal character. But if you use the backslash character in front of the letter t , it'll become the tab character ( \t ).