Hướng dẫn python string ignore special characters - chuỗi python bỏ qua các ký tự đặc biệt

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 ký tự

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
0 mỗi nhân vật với một dấu gạch chéo
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
1.

Ví dụ: chuỗi:

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
2 sẽ trở thành:

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

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

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
3 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 python string ignore special characters - chuỗi python bỏ qua các ký tự đặc biệt

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

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

Đã 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 python string ignore special characters - chuỗi python bỏ qua các ký tự đặc biệt

Ry- ♦ ry-Ry-

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

2

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
3 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

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
6 để 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.4K20 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

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
7 cũng có thể hoạt động thay vì
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
8. 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

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
9 tích hợp để đối phó với
import re
escaped = re.escape(a_string)
0 và xử lý đầu ra của
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
3 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

Hướng dẫn python string ignore special characters - chuỗi python bỏ qua các ký tự đặc biệt

Trình tự thoát cho phép bạn bao gồm các ký tự đặc biệt trong chuỗi. Để làm điều này, chỉ cần thêm một dấu gạch chéo ngược (

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
1) trước khi nhân vật bạn muốn trốn thoát.

Ví dụ, hãy tưởng tượng bạn đã khởi tạo một chuỗi với các trích dẫn đơn:

s = 'Hey, whats up?'
print(s)

Output:

Hey, whats up?

Nhưng nếu bạn bao gồm một dấu nháy đơn mà không thoát khỏi nó, thì bạn sẽ gặp lỗi:

s = 'Hey, what's up?'
print(s)

Output:

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

Để khắc phục điều này, chỉ cần thoát khỏi dấu nháy đơn:

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

Để thêm các dòng mới vào chuỗi của bạn, hãy sử dụng

import re
escaped = re.escape(a_string)
3:

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

Output:

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

Một điều quan trọng cần nhớ là, nếu bạn muốn đưa một ký tự dấu gạch chéo ngược trong một chuỗi, bạn sẽ cần phải thoát khỏi điều đó. Ví dụ: nếu bạn muốn in một đường dẫn thư mục trong Windows, bạn sẽ cần thoát từng dấu gạch chéo ngược trong chuỗi:

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

Output:

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

Dây thô

Một chuỗi thô có thể được sử dụng bằng cách đặt tiền tố chuỗi với

import re
escaped = re.escape(a_string)
4 hoặc
import re
escaped = re.escape(a_string)
5, cho phép đưa vào dấu gạch chéo ngược mà không cần phải thoát chúng. Ví dụ:

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

Output:

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

Nhưng hãy nhớ rằng các dấu gạch chéo không được phân giải ở cuối chuỗi thô sẽ gây ra và lỗi:

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

Output:

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

Trình tự thoát phổ biến

Trình tự thoátNghĩa
\Backslash (
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
1)
'Trích dẫn đơn (
import re
escaped = re.escape(a_string)
7)
"Báo giá kép (
import re
escaped = re.escape(a_string)
8)
\NASCII LineFeed (thêm Newline)
\ bASCII backspace

Một danh sách đầy đủ các chuỗi thoát có thể được tìm thấy ở đây trong các tài liệu Python.


Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Làm thế nào để bạn bỏ qua một ký tự đặc biệt trong một chuỗi trong Python?

Loại bỏ các ký tự đặc biệt bao gồm các chuỗi sử dụng python isalnum. Python có một phương thức chuỗi đặc biệt,. isalnum (), trả về true nếu chuỗi là một ký tự alpha-numeric và trả về sai nếu không. Chúng ta có thể sử dụng điều này, để lặp qua một chuỗi và nối vào một chuỗi mới, chỉ có các ký tự alpha-numeric.Using Python isalnum. Python has a special string method, . isalnum() , which returns True if the string is an alpha-numeric character, and returns False if it is not. We can use this, to loop over a string and append, to a new string, only alpha-numeric characters.

Làm cách nào để loại bỏ các ký tự đặc biệt khỏi một văn bản trong Python?

Xóa các ký tự đặc biệt khỏi chuỗi trong Python bằng STR.phương thức isalnum ().STR.Phương thức isalnum () trả về true nếu các ký tự là ký tự chữ và số, có nghĩa là không có ký tự đặc biệt nào trong chuỗi.

Làm cách nào để loại bỏ các ký tự đặc biệt khỏi chuỗi?

Ví dụ về việc loại bỏ các ký tự đặc biệt bằng phương thức thay thế ()..
Loại bỏ lớp công khai EXPECIALCHARACTERExample1 ..
Công khai tĩnh chính (chuỗi args []).
Chuỗi str = "#chuỗi%này chứa^ký tự*đặc biệt &." ;.
str = str.replaceall ("[^a-za-z0-9]", "") ;.
System.out.println(str);.

Làm cách nào để in một chuỗi không có ký tự đặc biệt?

Giải pháp 2: In chuỗi thô để bỏ qua ý nghĩa đặc biệt của Escape chars.Ngoài ra, bạn có thể in một chuỗi thô r "..." để in chuỗi mà không diễn giải các ký tự thoát.Ví dụ: bản in câu lệnh ('r "Tìm hiểu \ tprogramming \ nwith \ t') sẽ chỉ đơn giản là in chuỗi thô" Tìm hiểu \ tprogramming \ nwith \ t ".print a raw string r"..." to print the string without interpreting the escape characters. For example, the statement print('r"Learn\tprogramming\nwith\t') will simply print the raw string "Learn\tprogramming\nwith\t" .