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

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ự

'\\^stack\\.\\*\\/overflow\\$arr\\=1'
1 mỗi nhân vật với một dấu gạch chéo ngược duy nhất
'\\^stack\\.\\*\\/overflow\\$arr\\=1'
2.

Ví dụ: chuỗi:

'\\^stack\\.\\*\\/overflow\\$arr\\=1'
3 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'
4 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 ignore special characters in string - python bỏ qua các ký tự đặc biệt trong chuỗi

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

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

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

Ry- ♦ ry-Ry-

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

2

'\\^stack\\.\\*\\/overflow\\$arr\\=1'
4 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'
7 để 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'
8 cũng có thể hoạt động thay vì
'\\^stack\\.\\*\\/overflow\\$arr\\=1'
9. 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"\."}))
0 tích hợp để đối phó với
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
1 và xử lý đầu ra của
'\\^stack\\.\\*\\/overflow\\$arr\\=1'
4 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

Trong hướng dẫn này, bạn sẽ học cách sử dụng Python để loại bỏ các ký tự đặc biệt khỏi chuỗi. Nhiều lần, khi làm việc với các chuỗi, bạn sẽ gặp các chuỗi với các ký tự đặc biệt. Những điều này có thể gây ra vấn đề khi bạn đang cố gắng tiến hành phân tích văn bản, chẳng hạn như xử lý ngôn ngữ tự nhiên. Bởi vì điều này, biết cách sử dụng Python để loại bỏ các ký tự đặc biệt khỏi chuỗi là một kỹ năng quan trọng.

Bắt đầu nào!

Câu trả lời nhanh: Sử dụng RE Sub

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

  • Xóa các ký tự đặc biệt bao gồm các chuỗi sử dụng python isalnum
  • Xóa các ký tự đặc biệt bằng cách sử dụng các biểu thức thông thường Python
  • Xóa các ký tự đặc biệt khỏi chuỗi bằng bộ lọc
  • Sự kết luận

Xóa các ký tự đặc biệt bao gồm các chuỗi sử dụng python isalnum

Xóa các ký tự đặc biệt bằng cách sử dụng các biểu thức thông thường Python

Xóa các ký tự đặc biệt khỏi chuỗi bằng bộ lọc

# Remove Special Characters from a String Using .isalnum()

text = 'datagy -- is. great!'
new_text = ''

for character in text:
    if character.isalnum():
        new_text += character

print(new_text)

# Returns: datagyisgreat

Sự kết luận

  1. Python có một phương thức chuỗi đặc biệt,
    escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                              "]":  r"\]",
                                              "\\": r"\\",
                                              "^":  r"\^",
                                              "$":  r"\$",
                                              "*":  r"\*",
                                              ".":  r"\."}))
    
    3, trả về
    escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                              "]":  r"\]",
                                              "\\": r"\\",
                                              "^":  r"\^",
                                              "$":  r"\$",
                                              "*":  r"\*",
                                              ".":  r"\."}))
    
    4 nếu chuỗi là ký tự alpha-numeric và trả về
    escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                              "]":  r"\]",
                                              "\\": r"\\",
                                              "^":  r"\^",
                                              "$":  r"\$",
                                              "*":  r"\*",
                                              ".":  r"\."}))
    
    5 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.
  2. Hãy cùng xem ví dụ này trông như thế nào:
  3. Hãy cùng xem những gì chúng tôi đã làm ở đây:

Chúng tôi khởi tạo hai chuỗi: một chuỗi chứa chuỗi cũ của chúng tôi và một chuỗi trống

Chúng tôi lặp qua từng ký tự trong chuỗi của chúng tôi và đánh giá xem nó có phải là chữ và số không, sử dụng phương pháp

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
3 This tutorial teaches you exactly what the
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
8 function does and shows you some creative ways to use the function.

Xóa các ký tự đặc biệt bằng cách sử dụng các biểu thức thông thường Python

Xóa các ký tự đặc biệt khỏi chuỗi bằng bộ lọc

Sự kết luận

Python có một phương thức chuỗi đặc biệt,

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
3, trả về
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
4 nếu chuỗi là ký tự alpha-numeric và trả về
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
5 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.

Hãy cùng xem ví dụ này trông như thế nào:

# Remove Special Characters from a String Using re.sub()
import re

text = 'datagy -- is. great!'
new_text = re.sub(r"[^a-zA-Z0-9 ]", "", text)

print(new_text)

# Returns: datagy  is great

Hãy cùng xem những gì chúng tôi đã làm ở đây:

  1. Chúng tôi khởi tạo hai chuỗi: một chuỗi chứa chuỗi cũ của chúng tôi và một chuỗi trống
  2. Chúng tôi lặp qua từng ký tự trong chuỗi của chúng tôi và đánh giá xem nó có phải là chữ và số không, sử dụng phương pháp
    escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                              "]":  r"\]",
                                              "\\": r"\\",
                                              "^":  r"\^",
                                              "$":  r"\$",
                                              "*":  r"\*",
                                              ".":  r"\."}))
    
    3

Nếu có, chúng tôi thêm ký tự vào chuỗi của chúng tôi. Nếu nó không, chúng tôi không làm gì cả.

Trong ví dụ tiếp theo, bạn sẽ học cách linh hoạt hơn một chút (chẳng hạn như giữ không gian), bằng cách sử dụng thư viện biểu thức thông thường Python,

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

Xóa các ký tự đặc biệt khỏi chuỗi bằng bộ lọc

Sự kết luận

Python có một phương thức chuỗi đặc biệt,

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
3, trả về
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
4 nếu chuỗi là ký tự alpha-numeric và trả về
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
5 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.

  1. Hãy cùng xem ví dụ này trông như thế nào:
  2. Hãy cùng xem những gì chúng tôi đã làm ở đây:

Chúng tôi khởi tạo hai chuỗi: một chuỗi chứa chuỗi cũ của chúng tôi và một chuỗi trống

Hãy để thử điều này trong Python:

# Remove Special Characters from a String Using re.sub()
import re

text = 'datagy -- is. great!'
new_text = ''.join(filter(str.isalnum, text))

print(new_text)

# Returns: datagyisgreat

Hãy cùng khám phá cách thức và lý do tại sao điều này hoạt động:

  1. Chúng tôi sử dụng chức năng bộ lọc để trả về một đối tượng bộ lọc bao gồm trên các ký tự chữ và số
  2. Sau đó, chúng tôi sử dụng phương thức
    $ 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
    >>>
    
    1 để tham gia các ký tự của chúng tôi với các ký tự trống.

Nếu bạn muốn bao gồm các ký tự khác, chẳng hạn như chuỗi, chúng ta có thể xác định một chức năng tùy chỉnh mà chúng ta có thể đánh giá chống lại.

Hãy để xem cách thức hoạt động của nó trong Python:

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

Hãy để phá vỡ lý do tại sao phương pháp này hoạt động:

  1. Chúng tôi xác định một hàm tùy chỉnh kiểm tra xem một ký tự có phải là chữ và số hay không hoặc nếu ký tự bằng một không gian, được xác định bởi ký tự
    $ 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
    >>>
    
    2
  2. Nếu là, thì
    escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                              "]":  r"\]",
                                              "\\": r"\\",
                                              "^":  r"\^",
                                              "$":  r"\$",
                                              "*":  r"\*",
                                              ".":  r"\."}))
    
    4 được trả lại. Mặt khác, biểu thức đánh giá là
    escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                              "]":  r"\]",
                                              "\\": r"\\",
                                              "^":  r"\^",
                                              "$":  r"\$",
                                              "*":  r"\*",
                                              ".":  r"\."}))
    
    5

Do đánh giá này về độ phân giải, chúng tôi lọc ra bất kỳ giá trị nào không đánh giá thành

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

Bạn muốn tìm hiểu thêm về Python F-String? Kiểm tra hướng dẫn chuyên sâu của tôi, bao gồm một video từng bước cho Master Python F-Strings!Check out my in-depth tutorial, which includes a step-by-step video to master Python f-strings!

Sự kết luận

Trong bài đăng này, bạn đã học cách xóa các ký tự đặc biệt khỏi chuỗi Python. Bạn đã học cách thực hiện việc này với phương thức

$ 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
>>>
6, thư viện biểu thức thông thường
escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
7 và hàm
import re
escaped = re.escape(a_string)
7. Học cách làm điều này là một kỹ năng quan trọng khi làm việc với dữ liệu văn bản ngày càng quan trọng hơn.

Để tìm hiểu thêm về Thư viện Biểu thức thông thường Python

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))
7, hãy xem tài liệu chính thức ở đây.

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 chuỗi?

Sử dụng phương thức str_replace (): Phương thức str_replace () được sử dụng để xóa tất cả các ký tự đặc biệt khỏi chuỗi str str str bằng cách thay thế các ký tự này bằng không gian trắng (phạm lỗi).: The str_replace() method is used to remove all the special characters from the given string str by replacing these characters with the white space (” “).

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

Thoát khỏi \ để phù hợp với các metacharacters theo nghĩa đen, tức là để loại bỏ ý nghĩa đặc biệt của chúng, tiền tố các ký tự đó có ký tự \ (dấu gạch chéo ngược).Để chỉ ra một ký tự \ theo nghĩa đen, hãy sử dụng \\.prefix those characters with a \ (backslash) character. To indicate a literal \ character, use \\ .

Làm cách nào để loại bỏ các ký tự đặc biệt khỏi chuỗi mà không cần loại bỏ khoảng trắng trong Python?

Cách xóa các ký tự đặc biệt khỏi chuỗi Python (4 cách)..
Phương pháp 1 - Sử dụng phương thức isalmun () ..
Phương pháp 2 - Sử dụng phương thức thay thế ().
Phương pháp 3 - Sử dụng Filter ().
Phương pháp 4 - Sử dụng chức năng Join + Generator ..