Hướng dẫn how do you skip special characters in python? - làm thế nào để bạn bỏ qua các ký tự đặc biệt trong python?

63

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng thoát khỏi các nhân vật -]\^$*. mỗi nhân vật với một dấu gạch chéo ngược \.

Ví dụ: chuỗi: ^stack.*/overflo\w$arr=1 sẽ trở thành:

\^stack\.\*/overflo\\w\$arr=1

Cách hiệu quả nhất để làm điều đó trong Python là gì?

'\\^stack\\.\\*\\/overflow\\$arr\\=1'
0 Double Escapes không phải là điều tôi muốn:

'\\^stack\\.\\*\\/overflow\\$arr\\=1'

Tôi cần điều này để trốn thoát cho một cái gì đó khác (nginx).

Hướng dẫn how do you skip special characters in python? - làm thế nào để bạn bỏ qua các ký tự đặc biệt trong python?

Karl Knechtel

59.3k10 Huy hiệu vàng86 Huy hiệu bạc130 Huy hiệu đồng10 gold badges86 silver badges130 bronze badges

Hỏi ngày 21 tháng 9 năm 2013 lúc 17:55Sep 21, 2013 at 17:55

1

Đây là một cách để làm điều đó (trong Python 3.x):

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))

Để tham khảo, để thoát khỏi các chuỗi để sử dụng trong regex:

import re
escaped = re.escape(a_string)

Đã trả lời ngày 21 tháng 9 năm 2013 lúc 17:56Sep 21, 2013 at 17:56

rlmsrlmsrlms

10.3k8 Huy hiệu vàng43 Huy hiệu bạc58 Huy hiệu đồng8 gold badges43 silver badges58 bronze badges

4

Chỉ cần giả sử đây là cho một biểu thức thông thường, sử dụng ____10.

Đã trả lời ngày 21 tháng 9 năm 2013 lúc 17:57Sep 21, 2013 at 17:57

Hướng dẫn how do you skip special characters in python? - làm thế nào để bạn bỏ qua các ký tự đặc biệt trong python?

Ry- ♦ ry-Ry-

Phim thương hiệu vàng 212K5454 gold badges443 silver badges457 bronze badges

2

'\\^stack\\.\\*\\/overflow\\$arr\\=1'
0 không trốn thoát gấp đôi. Nó chỉ có vẻ như nó làm nếu bạn chạy trong phần lại. Lớp thoát thứ hai là do xuất ra màn hình.

Khi sử dụng replet, hãy thử sử dụng

'\\^stack\\.\\*\\/overflow\\$arr\\=1'
3 để xem những gì thực sự trong chuỗi.

$ python
>>> import re
>>> re.escape("\^stack\.\*/overflo\\w\$arr=1")
'\\\\\\^stack\\\\\\.\\\\\\*\\/overflo\\\\w\\\\\\$arr\\=1'
>>> print re.escape("\^stack\.\*/overflo\\w\$arr=1")
\\\^stack\\\.\\\*\/overflo\\w\\\$arr\=1
>>>

Đã trả lời ngày 5 tháng 5 năm 2016 lúc 11:14May 5, 2016 at 11:14

rjmunrorjmunrorjmunro

26.5K20 Huy hiệu vàng108 Huy hiệu bạc132 Huy hiệu Đồng20 gold badges108 silver badges132 bronze badges

Chỉ cần sử dụng

'\\^stack\\.\\*\\/overflow\\$arr\\=1'
4 cũng có thể hoạt động thay vì
'\\^stack\\.\\*\\/overflow\\$arr\\=1'
5. Và điều này cũng sẽ hoạt động trong Python 2.x

>>> print(re.sub(r'(\-|\]|\^|\$|\*|\.|\\)',lambda m:{'-':'\-',']':'\]','\\':'\\\\','^':'\^','$':'\$','*':'\*','.':'\.'}[m.group()],"^stack.*/overflo\w$arr=1"))
\^stack\.\*/overflo\\w\$arr=1

Đã trả lời ngày 8 tháng 1 năm 2016 lúc 7:04Jan 8, 2016 at 7:04

Akshay Hazariakshay HazariAkshay Hazari

3.0393 Huy hiệu vàng43 Huy hiệu bạc76 Huy hiệu đồng3 gold badges43 silver badges76 bronze badges

Sử dụng đầu ra của

'\\^stack\\.\\*\\/overflow\\$arr\\=1'
6 tích hợp để đối phó với
'\\^stack\\.\\*\\/overflow\\$arr\\=1'
7 và xử lý đầu ra của
'\\^stack\\.\\*\\/overflow\\$arr\\=1'
0 là những gì bạn muốn:

re.escape(repr(a)[1:-1]).replace('\\\\', '\\')

Đã trả lời ngày 26 tháng 3 năm 2016 lúc 11:48Mar 26, 2016 at 11:48


Ký tự thoát

Để chèn các ký tự là bất hợp pháp trong một chuỗi, hãy sử dụng một ký tự thoát.

Một nhân vật thoát là một dấu gạch chéo ngược \ theo sau là nhân vật bạn muốn chèn.

Một ví dụ về một ký tự bất hợp pháp là một trích dẫn kép bên trong một chuỗi được bao quanh bởi các trích dẫn kép:

Thí dụ

Bạn sẽ gặp lỗi nếu bạn sử dụng dấu ngoặc kép bên trong một chuỗi được bao quanh bởi các trích dẫn kép:

txt = "Chúng tôi là người được gọi là" người Viking "từ phía bắc."

Hãy tự mình thử »

Để khắc phục sự cố này, hãy sử dụng ký tự thoát

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
0:

Thí dụ

Bạn sẽ gặp lỗi nếu bạn sử dụng dấu ngoặc kép bên trong một chuỗi được bao quanh bởi các trích dẫn kép:

txt = "Chúng tôi là người được gọi là" người Viking "từ phía bắc."

Hãy tự mình thử »

Để khắc phục sự cố này, hãy sử dụng ký tự thoát

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
0:

Nhân vật thoát cho phép bạn sử dụng trích dẫn kép khi bạn thường không được phép: TXT = "Chúng tôi là người được gọi là \" Vikings \ "từ phía bắc."Các nhân vật thoát khác được sử dụng trong Python:
Mã sốKết quảThử nó
\ 'Trích dẫn duy nhấtThử nó
\ 'Trích dẫn duy nhấtThử nó
\ 'Trích dẫn duy nhấtThử nó
\ 'Trích dẫn duy nhấtThử nó
\ 'Trích dẫn duy nhấtThử nó
\ 'Trích dẫn duy nhất
Thử nó "\\Thử nó
\ 'Trích dẫn duy nhấtThử nó



Làm thế nào để bạn tránh các nhân vật đặc biệt trong Python?

Xóa ký hiệu khỏi chuỗi bằng Trình tạo nối () + bằng cách sử dụng python tham gia (), chúng tôi làm lại chuỗi.Trong hàm Trình tạo, chúng tôi chỉ định logic để bỏ qua các ký tự trong bad_chars và do đó xây dựng một chuỗi mới không có ký tự xấu. By using Python join() we remake the string. In the generator function, we specify the logic to ignore the characters in bad_chars and hence construct a new string free from bad characters.

Làm thế nào để bạn bỏ qua một nhân vật trong Python?

Một nhân vật thoát là một dấu gạch chéo ngược \ theo sau là nhân vật bạn muốn chèn.a backslash \ followed by the character you want to insert.

Làm thế nào để bạn bỏ qua các ký tự đặc biệt?

Các ký tự thoát sử dụng ký tự dấu gạch chéo ngược để thoát khỏi một ký tự hoặc ký hiệu.Chỉ có nhân vật ngay sau khi chao đảo bị thoát ra.Use the backslash character to escape a single character or symbol. Only the character immediately following the backslash is escaped.

Làm thế nào để bạn xóa các ký tự đặc biệt khỏi văn bản trong Python?

Các phương thức sau có thể được sử dụng để loại bỏ các ký tự đặc biệt khỏi chuỗi trong Python,..
Phương thức isalnum () ..
Sử dụng các biểu thức chính quy (regex) trong Python ..
Phương thức thay thế () ..
Phương thức bộ lọc () ..
Phương thức dịch () ..