Hướng dẫn remove punctuation from string python except - xóa dấu chấm câu khỏi chuỗi python ngoại trừ

Tôi có mã này để xóa tất cả các dấu câu từ chuỗi regex:

import regex as re    
re.sub[ur"\p{P}+", "", txt]

Làm thế nào tôi có thể thay đổi nó để cho phép dấu gạch nối? Nếu bạn có thể giải thích cách bạn đã làm điều đó, điều đó sẽ rất tuyệt. Tôi hiểu rằng ở đây, hãy sửa cho tôi nếu tôi sai, P với bất cứ điều gì sau khi nó được chấm câu.

hỏi ngày 18 tháng 1 năm 2014 lúc 19:48Jan 18, 2014 at 19:48

JohnjohnJohn

2.8797 Huy hiệu vàng33 Huy hiệu bạc66 Huy hiệu Đồng7 gold badges33 silver badges66 bronze badges

2

[^\P{P}-]+

\P là bổ sung của

[^\P{P}-]+
0 - không phải dấu câu. Vì vậy, điều này phù hợp với bất cứ điều gì không phải [không dấu chấm câu hoặc dấu gạch ngang] - dẫn đến tất cả các dấu câu ngoại trừ dấu gạch ngang.

Ví dụ: //www.rubular.com/r/jsdnm3nfj3

Nếu bạn muốn một cách không liên quan, một giải pháp thay thế là

[^\P{P}-]+
1: khớp với tất cả các dấu câu, và sau đó kiểm tra nó không phải là một dấu gạch ngang [sử dụng Lookbehind tiêu cực]. Ví dụ làm việc: //www.rubular.com/r/5g62isytdk
Working example: //www.rubular.com/r/5G62iSYTdk

Ravindra s

6.21212 Huy hiệu vàng68 Huy hiệu bạc106 Huy hiệu Đồng12 gold badges68 silver badges106 bronze badges

Đã trả lời ngày 18 tháng 1 năm 2014 lúc 20:00Jan 18, 2014 at 20:00

KobikobiKobi

Huy hiệu vàng 133K4141 gold badges253 silver badges285 bronze badges

4

Đây là cách thực hiện với mô -đun

[^\P{P}-]+
2, trong trường hợp bạn phải gắn bó với các thư viện tiêu chuẩn:

# works in python 2 and 3
import re
import string

remove = string.punctuation
remove = remove.replace["-", ""] # don't remove hyphens
pattern = r"[{}]".format[remove] # create the pattern

txt = "]*^%{}[]thi's - is - @@#!a !%%!!%- test."
re.sub[pattern, "", txt] 
# >>> 'this - is - a - test'

Nếu hiệu suất quan trọng, bạn có thể muốn sử dụng

[^\P{P}-]+
3, vì nó nhanh hơn so với sử dụng regex. Trong Python 3, mã là
[^\P{P}-]+
4.

Đã trả lời ngày 8 tháng 6 năm 2016 lúc 16:44Jun 8, 2016 at 16:44

Galen Longgalen dàiGalen Long

3.5201 Huy hiệu vàng24 Huy hiệu bạc36 Huy hiệu đồng1 gold badge24 silver badges36 bronze badges

4

Bạn có thể chỉ định dấu câu bạn muốn xóa thủ công, như trong

[^\P{P}-]+
5 hoặc cung cấp chức năng thay vì chuỗi thay thế:

re.sub[r"\p{P}", lambda m: "-" if m.group[0] == "-" else "", text]

Đã trả lời ngày 18 tháng 1 năm 2014 lúc 19:57Jan 18, 2014 at 19:57

Cu3PO42Cu3PO42Cu3PO42

1.37510 Huy hiệu bạc19 Huy hiệu đồng10 silver badges19 bronze badges

Trong hướng dẫn này, bạn sẽ học cách sử dụng Python để loại bỏ dấu câu từ một chuỗi. Bạn có thể học cách loại bỏ dấu chấm câu từ chuỗi Python bằng phương pháp

[^\P{P}-]+
6, phương pháp
[^\P{P}-]+
7, thư viện biểu thức chính quy phổ biến
[^\P{P}-]+
2, và cuối cùng, sử dụng cho vòng lặp.Python to remove punctuation from a string. You’ll learn how to strip punctuation from a Python string using the
[^\P{P}-]+
6 method, the
[^\P{P}-]+
7 method, the popular regular expression library
[^\P{P}-]+
2, and, finally, using for-loops.

Có thể làm việc với và thao tác chuỗi là một kỹ năng thiết yếu cho bất kỳ Pythonista nào. Các chuỗi bạn tìm thấy qua Internet hoặc các tệp của bạn thường sẽ yêu cầu khá nhiều công việc để có thể phân tích chúng. Một trong những nhiệm vụ mà bạn thường gặp là khả năng sử dụng Python để xóa dấu câu từ một chuỗi.

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

[^\P{P}-]+
9 cho hiệu suất nhanh nhất for the fastest performance

  • Sử dụng Python để xóa dấu câu từ một chuỗi có dịch
  • Sử dụng Python để dải dấu câu từ một chuỗi có biểu thức thông thường [Regex]
  • Sử dụng Python để xóa dấu câu từ chuỗi bằng str.replace
  • Sử dụng Python để dải dấu câu từ chuỗi bằng cách sử dụng vòng lặp for
  • Cách nhanh nhất để loại bỏ chuỗi trăn từ dấu câu là gì?
  • Các câu hỏi thường gặp
  • Sự kết luận
  • Tài nguyên bổ sung

Sử dụng Python để xóa dấu câu từ một chuỗi có dịch

Sử dụng Python để dải dấu câu từ một chuỗi có biểu thức thông thường [Regex]

Sử dụng Python để xóa dấu câu từ chuỗi bằng str.replace

import string

a_string = '!hi. wh?at is the weat[h]er lik?e.'
new_string = a_string.translate[str.maketrans['', '', string.punctuation]]

print[new_string]

# Returns: hi what is the weather like

Sử dụng Python để dải dấu câu từ chuỗi bằng cách sử dụng vòng lặp for

Cách nhanh nhất để loại bỏ chuỗi trăn từ dấu câu là gì?If you want to learn how to use the translate method [and others!] to remove a character from a string in Python, check out my in-depth tutorial here.

Chuỗi Python là gì?

Một trong những cách dễ nhất để loại bỏ dấu câu từ một chuỗi trong Python là sử dụng phương thức

[^\P{P}-]+
6. Phương thức dịch [] thường lấy một bảng dịch, mà chúng tôi sẽ sử dụng phương thức
# works in python 2 and 3
import re
import string

remove = string.punctuation
remove = remove.replace["-", ""] # don't remove hyphens
pattern = r"[{}]".format[remove] # create the pattern

txt = "]*^%{}[]thi's - is - @@#!a !%%!!%- test."
re.sub[pattern, "", txt] 
# >>> 'this - is - a - test'
1.

Trong trường hợp bạn tò mò về những dấu chấm câu được bao gồm trong

# works in python 2 and 3
import re
import string

remove = string.punctuation
remove = remove.replace["-", ""] # don't remove hyphens
pattern = r"[{}]".format[remove] # create the pattern

txt = "]*^%{}[]thi's - is - @@#!a !%%!!%- test."
re.sub[pattern, "", txt] 
# >>> 'this - is - a - test'
7, hãy để có một cái nhìn nhanh:

print[string.punctuation]

# Returns: !"#$%&'[]*+,-./:;[email protected][\]^_`{|}~

Sử dụng Python để dải dấu câu từ một chuỗi có biểu thức thông thường [Regex]

Thư viện biểu thức thông thường Python,

[^\P{P}-]+
2, cảm thấy như nó có thể làm bất cứ điều gì - bao gồm cả việc tước dấu câu từ một chuỗi!

Biểu thức chính quy là tuyệt vời vì nó được tích hợp tích hợp với một số lớp nhân vật hữu ích cho phép chúng tôi chọn các loại ký tự khác nhau. Ví dụ, \ w \ s tìm kiếm các từ hoặc khoảng trắng. Chúng ta có thể chọn ngược lại với điều này [tức là, bất cứ điều gì không phải là một từ hoặc khoảng trắng] bằng cách sử dụng ký tự ^. Sau đó, điều này cho phép chúng tôi chọn bất cứ thứ gì không phải là một từ hoặc khoảng trắng, trong trường hợp của chúng tôi, nó chọn dấu câu.

Hãy để xem cách chúng ta có thể sử dụng Regex để loại bỏ dấu câu trong Python:

import re

a_string = '!hi. wh?at is the weat[h]er lik?e.'
new_string = re.sub[r'[^\w\s]', '', a_string]

print[new_string]

# Returns: hi what is the weather like

Đây là một cách tiếp cận tuyệt vời để tìm kiếm bất cứ thứ gì là một nhân vật chữ và trắng, và thay thế nó bằng một chuỗi trống, do đó loại bỏ nó.

Sử dụng Python để xóa dấu câu từ chuỗi bằng str.replace

Phương pháp

[^\P{P}-]+
7 giúp dễ dàng thay thế một ký tự. Ví dụ: nếu bạn muốn chỉ thay thế một ký tự dấu chấm câu, đây sẽ là một giải pháp đơn giản, đơn giản.

Hãy nói rằng bạn chỉ muốn thay thế ký tự

re.sub[r"\p{P}", lambda m: "-" if m.group[0] == "-" else "", text]
1 từ chuỗi của chúng tôi, chúng tôi có thể sử dụng phương pháp
[^\P{P}-]+
7 để thực hiện điều này. Hãy cùng xem cách làm thế nào:

a_string = '!hi. wh?at is the weat[h]er lik?e.'
new_string = a_string.replace['!', '']

print[new_string]

# Returns: hi. wh?at is the weat[h]er lik?e.

Những gì chúng tôi đã thực hiện ở đây, là nối lại phương thức

re.sub[r"\p{P}", lambda m: "-" if m.group[0] == "-" else "", text]
3 vào chuỗi của chúng tôi. Tham số đầu tiên là chuỗi để thay thế, trong trường hợp này là ký tự
re.sub[r"\p{P}", lambda m: "-" if m.group[0] == "-" else "", text]
1 của chúng tôi. Tham số thứ hai là những gì để thay thế nó, trong trường hợp này là một chuỗi trống.

Trong ví dụ tiếp theo, bạn sẽ học cách sử dụng vòng lặp For để thay thế tất cả các dấu câu từ một chuỗi bằng cách sử dụng vòng lặp.

Sử dụng Python để dải dấu câu từ chuỗi bằng cách sử dụng vòng lặp for

Trong phần trước của hướng dẫn, bạn đã học cách sử dụng phương pháp

[^\P{P}-]+
7 để xóa một ký tự dấu chấm câu. Trong phần này, chúng tôi sẽ lặp lại ví dụ này, nhưng sử dụng vòng lặp để có thể xóa mọi ký tự dấu chấm câu.

Hãy để xem cách chúng ta có thể làm điều này trong Python:

import string

a_string = '!hi. wh?at is the weat[h]er lik?e.'

for character in string.punctuation:
    a_string = a_string.replace[character, '']

print[a_string]

# Returns: hi what is the weather like

Một trong những điều cần lưu ý ở đây là chúng tôi viết qua chuỗi ban đầu của chúng tôi ở đây. Chúng ta có thể gán một chuỗi mới, vì nó sẽ liên tục thay thế chính nó.

Bây giờ bạn đã học được một số phương pháp, hãy để xem phương pháp nào trong số này là nhanh nhất.

Cách nhanh nhất để loại bỏ chuỗi trăn từ dấu câu là gì?

Trong hướng dẫn này, bạn đã học ba phương pháp khác nhau để loại bỏ dấu câu từ một chuỗi trong Python. Hãy để xem phương pháp nào trong số này là nhanh nhất.

Đối với thử nghiệm này, chúng tôi đã tạo ra một chuỗi dài hơn 1.000.000.000 ký tự và xóa tất cả các dấu câu từ một chuỗi bằng Python.

Hãy cùng xem kết quả:

Phương phápMất thời gian
str.translate []2,35 giây
Biểu cảm thường xuyên88,8 giây
cho vòng lặp với str.replace []20,6 giây
Tìm ra phương pháp nào là nhanh nhất để thay thế tất cả các dấu câu trong một chuỗi theo cách nhanh nhất để loại bỏ dấu câu từ một chuỗi trong Python
The fastest way to remove punctuation from a string in Python

Cách nhanh nhất để loại bỏ dấu câu từ một chuỗi trong Python là gì?

Phương pháp

[^\P{P}-]+
6 là cách nhanh nhất để loại bỏ dấu câu từ một chuỗi trong Python - đôi khi nhanh hơn tới 40 lần!

Tất nhiên, tốc độ không phải là tất cả mọi thứ, nhưng việc tìm mã làm chậm đáng kể mã của bạn thường sẽ dẫn đến trải nghiệm người dùng kém hơn.

Các câu hỏi thường gặp

Chuỗi Python là gì?

Python đi kèm với một thư viện tích hợp, chuỗi, bao gồm tất cả các ký tự chấm câu phổ biến bằng cách sử dụng thuộc tính

# works in python 2 and 3
import re
import string

remove = string.punctuation
remove = remove.replace["-", ""] # don't remove hyphens
pattern = r"[{}]".format[remove] # create the pattern

txt = "]*^%{}[]thi's - is - @@#!a !%%!!%- test."
re.sub[pattern, "", txt] 
# >>> 'this - is - a - test'
7. Bao gồm là:!

Làm thế nào bạn có thể thay thế dấu câu bằng một không gian trong Python?

Cách dễ nhất để thay thế dấu câu bằng một không gian trong Python là sử dụng phương thức

[^\P{P}-]+
9 với thư viện
# works in python 2 and 3
import re
import string

remove = string.punctuation
remove = remove.replace["-", ""] # don't remove hyphens
pattern = r"[{}]".format[remove] # create the pattern

txt = "]*^%{}[]thi's - is - @@#!a !%%!!%- test."
re.sub[pattern, "", txt] 
# >>> 'this - is - a - test'
7. Đơn giản chỉ cần viết:
import string

a_string = '!hi. wh?at is the weat[h]er lik?e.'
new_string = a_string.translate[str.maketrans['', '', string.punctuation]]

print[new_string]

# Returns: hi what is the weather like
0.

Sự kết luận

Trong bài đăng này, bạn đã học được cách tước dấu câu từ chuỗi Python. Bạn đã học cách thực hiện việc này bằng phương pháp

[^\P{P}-]+
6, cũng như các biểu thức thông thường. Bạn cũng đã học cách làm điều này với phương pháp
re.sub[r"\p{P}", lambda m: "-" if m.group[0] == "-" else "", text]
3 cũng như với vòng lặp. Cuối cùng, bạn đã học được phương pháp nào trong số này là nhanh nhất.

Để tìm hiểu thêm về phương pháp

[^\P{P}-]+
6, hãy xem tài liệu chính thức ở đây.

Tài nguyên bổ sung

Để tìm hiểu thêm về các chủ đề liên quan, hãy xem các hướng dẫn dưới đây:

  • Chuỗi Python chứa: Kiểm tra xem một chuỗi có chứa chuỗi con không
  • Cách kết hợp các chuỗi trong Python: Hướng dẫn đầy đủ
  • Python: Sắp xếp một chuỗi [4 cách khác nhau]
  • Python rfind: Tìm chỉ mục của chuỗi con cuối cùng trong chuỗi
  • Python: Tìm một chỉ mục [hoặc tất cả] của chuỗi con trong chuỗi

Làm thế nào để bạn xóa tất cả các dấu câu ngoại trừ từ một chuỗi trong Python?

Một trong những cách dễ nhất để loại bỏ dấu câu từ một chuỗi trong python là sử dụng phương thức str.translate []. Phương thức dịch [] thường lấy một bảng dịch, mà chúng ta sẽ sử dụng. Phương pháp maketrans [].use the str. translate[] method. The translate[] method typically takes a translation table, which we'll do using the . maketrans[] method.

Làm thế nào để bạn loại bỏ dấu chấm câu trong Python?

Một trong những phương pháp dễ nhất và nhanh nhất mà qua đó các dấu chấm câu và ký tự đặc biệt có thể được xóa khỏi chuỗi là bằng cách sử dụng phương thức dịch [].Hàm dịch tích hợp [] có sẵn trong thư viện chuỗi của Python.using the translate [] method. The built-in translate [] function is available in the string library of Python.

Làm cách nào để kiểm tra xem một chuỗi có chứa một dấu chấm câu không?

Explanation..
Nhập mô -đun chuỗi để sử dụng các phương thức và chức năng của nó ..
Nhập chuỗi để kiểm tra ..
Sử dụng trong từ khóa để kiểm tra dấu câu trong chuỗi đã nhập ..
Sử dụng chuỗi.dấu câu để kiểm tra ..
Nếu có, dấu câu sẽ được thay thế bằng một khoảng trống ..

Làm thế nào để bạn loại bỏ không gian trước một khoảng thời gian trong Python?

Dải [] Chức năng Dải chuỗi Python [] sẽ loại bỏ các khoảng trắng dẫn đầu và dấu vết.Nếu bạn muốn loại bỏ các không gian dẫn hoặc dấu vết, hãy sử dụng hàm lstrip [] hoặc rstrip [] thay thế. Python String strip[] function will remove leading and trailing whitespaces. If you want to remove only leading or trailing spaces, use lstrip[] or rstrip[] function instead.

Bài Viết Liên Quan

Chủ Đề