Hướng dẫn how do you stop a double backslash in python? - làm thế nào để bạn ngăn chặn dấu gạch chéo ngược kép trong python?

Backslash kép không sai, Python đại diện cho nó theo cách cho người dùng. Trong mỗi dấu gạch chéo ngược đôi

>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
4, người đầu tiên thoát khỏi lần thứ hai để ngụ ý một dấu gạch chéo ngược thực tế. Nếu
>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
5 và
>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
6 (không 'R' và chém đôi rõ ràng) thì cả hai đều được đại diện là
>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
7.

>>> a = r'raw s\tring'
>>> b = 'raw s\\tring'
>>> a
'raw s\\tring'
>>> b
'raw s\\tring'

Để làm rõ, khi bạn in chuỗi, bạn sẽ thấy nó như nó sẽ được sử dụng, giống như trong một đường dẫn - chỉ với một dấu gạch chéo ngược:

>>> print(a)
raw s\tring
>>> print(b)
raw s\tring

Và trong trường hợp chuỗi in này,

>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
8 không ngụ ý một tab, đó là một dấu gạch chéo ngược
>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
9 theo sau là chữ 't'.

Mặt khác, một chuỗi không có tiền tố 'r' và một dấu gạch chéo ngược sẽ thoát khỏi ký tự sau nó, khiến nó đánh giá 'T' theo nó == tab:

>>> t = 'not raw s\tring'  # here '\t' = tab
>>> t
'not raw s\tring'
>>> print(t)  # will print a tab (and no letter 't' in 's\tring')
not raw s       ring

Vì vậy, trong đường dẫn PDF+Tên:

>>> item = 'xyz'
>>> PDF = r'C:\Users\user\Desktop\File_%s.pdf' % item
>>> PDF         # the representation of the string, also in error messages
'C:\\Users\\user\\Desktop\\File_xyz.pdf'
>>> print(PDF)  # "as used"
C:\Users\user\Desktop\File_xyz.pdf

Thông tin thêm về trình tự thoát trong bảng ở đây. Cũng xem

>>> t = 'not raw s\tring'  # here '\t' = tab
>>> t
'not raw s\tring'
>>> print(t)  # will print a tab (and no letter 't' in 's\tring')
not raw s       ring
0 so với
>>> t = 'not raw s\tring'  # here '\t' = tab
>>> t
'not raw s\tring'
>>> print(t)  # will print a tab (and no letter 't' in 's\tring')
not raw s       ring
1.

Ngày 24 tháng 7 năm 2018. Bởi reuven. By Reuven

Hướng dẫn how do you stop a double backslash in python? - làm thế nào để bạn ngăn chặn dấu gạch chéo ngược kép trong python?
Tôi là một anh chàng Unix, nhưng những người tham gia các lớp Python của tôi sử dụng Windows một cách áp đảo. Chắc chắn, khi chúng ta nói về việc làm việc với các tệp trong Python, ai đó sẽ muốn mở một tệp bằng cách sử dụng đường dẫn hoàn chỉnh đến tệp. & NBSP; Và cuối cùng họ sẽ viết một cái gì đó như thế này:

filename = 'c:\abc\def\ghi.txt'

Nhưng khi các sinh viên của tôi cố gắng mở tệp, họ phát hiện ra rằng Python cho họ một lỗi, cho biết rằng tệp không tồn tại! & NBSP; Nói cách khác, họ viết:

for one_line in open(filename):    print(one_line)

Vấn đề gì? & NBSP; Điều này có vẻ như Python khá tiêu chuẩn, không?

Hãy nhớ rằng các chuỗi trong Python thường chứa các ký tự. Những nhân vật đó thường có thể in được, nhưng có những lúc bạn muốn bao gồm một nhân vật không thực sự có thể in được, chẳng hạn như một dòng mới. & NBSP; Trong những trường hợp đó, Python (giống như nhiều ngôn ngữ lập trình) bao gồm các mã đặc biệt sẽ chèn ký tự đặc biệt.

Ví dụ nổi tiếng nhất là Newline, AKA ‘\ n, hoặc ASCII 10. Nếu bạn muốn chèn một dòng mới vào chuỗi Python của mình, thì bạn có thể làm như vậy với‘ \ n, ở giữa. & NBSP; Ví dụ:

s = 'abc\ndef\nghi'

Khi chúng tôi in chuỗi, chúng tôi sẽ thấy:

>>> print(s)

abc

def

ghi

Điều gì sẽ xảy ra nếu bạn muốn in một nghĩa đen ‘\ n, trong mã của bạn? Đó là, bạn muốn một dấu gạch chéo ngược, theo sau là một N N NBSP; Sau đó, bạn sẽ cần phải tăng gấp đôi dấu gạch chéo ngược: \ \ 'trong một chuỗi sẽ dẫn đến một ký tự dấu gạch chéo ngược. Sau đó, các N N N sẽ bình thường. Ví dụ:

s = 'abc\\ndef\\nghi'

Khi chúng ta nói:

>>> print(s)

abc\ndef\nghi

Nó rất nổi tiếng rằng bạn phải bảo vệ chống lại bản dịch này khi bạn làm việc với \ n. Nhưng những nhân vật khác yêu cầu nó? Hóa ra, nhiều người có thể mong đợi:

  • \ A - chuông báo thức (ASCII 7)
  • \ B - Backspace (ASCII
  • \ f - nguồn cấp dữ liệu hình thức
  • \ n - Newline
  • \ r - Trở lại vận chuyển
  • \ t - tab
  • \ V - tab dọc
  • \ ooo - & nbsp; Nhân vật có giá trị bát phân ooo
  • \ XHH - Nhân vật có giá trị hex HH
  • \ N {name} - ký tự unicode {name}
  • \ uxxxx-ký tự unicode với giá trị hex 16 bit xxxx
  • \ Uxxxxxxxxx-ký tự unicode với giá trị hex 32 bit xxxxxxxxx

Theo kinh nghiệm của tôi, bạn rất khó sử dụng một số trong số này. Ý tôi là, lần cuối cùng bạn cần sử dụng ký tự thức ăn mẫu là khi nào? Hoặc một tab dọc? & Nbsp; Tôi biết - đó là cùng ngày mà bạn lái con khủng long của bạn để làm việc, sau khi đào một cái giếng trong sân sau của bạn để uống nước.

Nhưng gần như mỗi khi tôi dạy Python - đó là, mỗi ngày - một người nào đó trong lớp của tôi va vào một trong những nhân vật này do nhầm lẫn. Điều đó bởi vì sự kết hợp của các dấu gạch chéo ngược được sử dụng bởi các nhân vật này và các dấu gạch chéo ngược được sử dụng trong các đường dẫn Windows làm cho các lỗi không thể tránh khỏi và bực bội.

Hãy nhớ rằng con đường tôi đã đề cập ở đầu bài đăng trên blog, có vẻ rất ngây thơ?

filename = 'c:\abc\def\ghi.txt'

Nó chứa một nhân vật \ a \ a. Có nghĩa là khi chúng ta in nó:

>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
1

Nhìn thấy? Các \ \ A đã biến mất, được thay thế bằng một ký tự chuông báo thức. Nếu bạn may mắn.

Vậy chúng ta có thể làm gì? Nhân đôi các dấu gạch chéo ngược, tất nhiên. Bạn chỉ cần tăng gấp đôi những thứ sẽ được biến thành các ký tự đặc biệt, từ bảng tôi đã sao chép ở trên: Nhưng thôi nào, bạn thực sự có khả năng nhớ rằng \ \ fiêu là đặc biệt, nhưng ; Chắc là không.

Vì vậy, quy tắc chung của tôi, và những gì tôi nói với các sinh viên của mình, là chúng phải luôn gấp đôi các dấu gạch chéo ngược trong đường dẫn Windows của họ. Nói cách khác:

>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
2

Nó hoạt động!

Nhưng chờ đã: Không ai muốn thực sự lội qua các tên đường dẫn của họ, nhân đôi mọi dấu gạch chéo ngược, phải không? & NBSP; Dĩ nhiên là không.

Đó là nơi mà các chuỗi thô của Python có thể giúp ích. Tôi nghĩ về các chuỗi thô theo hai cách khác nhau:

  • Những gì bạn-xem-là-What-What-You-Get String
  • Tự động tăng gấp đôi các dấu gạch chéo trong chuỗi

Dù bằng cách nào, hiệu ứng là như nhau: tất cả các dấu gạch chéo ngược được nhân đôi, vì vậy tất cả những nhân vật đặc biệt đáng sợ và kỳ lạ này đều biến mất. & NBSP; Điều đó thật tuyệt khi bạn làm việc với các đường dẫn Windows.

Tất cả những gì bạn cần làm là đặt một bản R R R trước khi trích dẫn mở đầu (đơn hoặc đôi):

>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
3

Lưu ý rằng một chuỗi RAW RAW là một loại chuỗi khác nhau. Nó chỉ là một cách khác để nhập một chuỗi vào Python. & NBSP; Nếu bạn kiểm tra, gõ (tên tệp) vẫn sẽ là Str Str, nhưng tất cả các dấu gạch chéo của nó sẽ được nhân đôi.

Điểm mấu chốt: Nếu bạn sử dụng Windows, thì bạn chỉ nên viết tất cả các chuỗi đường dẫn được mã hóa cứng của mình dưới dạng chuỗi thô. & NBSP; Ngay cả khi bạn là một chuyên gia Python, tôi có thể nói với bạn từ kinh nghiệm rằng đôi khi bạn sẽ chống lại vấn đề này. Và ngay cả đối với những người giỏi nhất trong chúng ta, việc phát hiện ra rằng Stray \ Fiêu trong một chuỗi có thể tốn thời gian và bực bội.

Tái bút: Vâng, thật đúng là người dùng Windows có thể hiểu được điều này bằng cách sử dụng các dấu gạch chéo về phía trước, giống như chúng tôi làm mọi người. Nhưng các sinh viên của tôi thấy điều này là đặc biệt kỳ lạ, và vì vậy tôi không thể xem nó như một giải pháp đa năng.

Thích bài viết này? Tham gia cùng hơn 11.000 nhà phát triển khác nhận bản tin của các nhà phát triển tốt hơn, hàng tuần của tôi. Mỗi thứ Hai, bạn sẽ nhận được một bài viết như thế này về phát triển phần mềm và Python:

Làm thế nào để bạn thoát khỏi dấu gạch chéo ngược trong Python?

Sử dụng phương thức str.Replace () để thay thế một dấu gạch chéo ngược bằng một dấu gạch chéo ngược duy nhất, ví dụ: new_string = chuỗi. thay thế('\\\\', '\\') . Backslashes có một ý nghĩa đặc biệt trong Python, vì vậy mỗi dấu gạch chéo ngược phải được thoát ra với một dấu gạch chéo ngược khác. replace() method to replace a double backslash with a single backslash, e.g. new_string = string. replace('\\\\', '\\') . Backslashes have a special meaning in Python, so each backslash has to be escaped with another backslash.

Backslash đôi trong Python là gì?

Có nghĩa là gì trong Python?Người vận hành trong Python.Trong Python, bạn sử dụng nhà điều hành chém đôi // để thực hiện phân chia sàn.Toán tử // này chia số thứ nhất cho số thứ hai và làm tròn kết quả xuống số nguyên gần nhất (hoặc toàn bộ số).to perform floor division. This // operator divides the first number by the second number and rounds the result down to the nearest integer (or whole number).

\\ có nghĩa là gì trong Python?

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.

Làm cách nào để thay đổi dấu gạch chéo ngược với đôi dấu gạch chéo ngược trong Python?

Hãy sử dụng mô -đun RE trong Python để thoát khỏi các ký tự đặc biệt.Giải thích: Bây giờ, hãy quan sát rằng chức năng Re.escape khi thoát các ký tự đặc biệt trong chuỗi đã cho chúng tôi có thể thêm một dấu gạch chéo ngược khác trước mỗi lần đánh dấu ngược và cuối cùng đầu ra dẫn đến một dấu gạch chéo ngược gấp đôi, đầu ra mong muốn.re. escape function on escaping the special chars in the given string we able to add an other backslash before each backslash, and finally the output results in a double backslash, the desired output.