Hướng dẫn how to remove space before period in python - cách xóa khoảng trắng trước dấu chấm trong python

Python Newbie tương đối ở đây. Tôi có một chuỗi văn bản đầu ra từ một chương trình tôi không thể sửa đổi. Để thảo luận, hãy nói:

text = "This text . Is to test . How it works ! Will it! Or won't it ? Hmm ?"

Tôi muốn loại bỏ không gian trước khi chấm câu, nhưng không loại bỏ không gian thứ hai. Tôi đã cố gắng làm điều đó với Regex và tôi biết rằng tôi có thể khớp với các trường hợp tôi muốn sử dụng Match = '\ s [\?.! \ "] \ S' làm thuật ngữ tìm kiếm của tôi.

x=re.search('\s[\?\.\!\"]\s',text)

Có cách nào với một re.sub để thay thế thuật ngữ tìm kiếm bằng khoảng trắng hàng đầu bị loại bỏ không? Bất kỳ ý tưởng về cách tiến hành?

hỏi ngày 18 tháng 9 năm 2013 lúc 17:47Sep 18, 2013 at 17:47

Hướng dẫn how to remove space before period in python - cách xóa khoảng trắng trước dấu chấm trong python

1

Đặt một nhóm xung quanh văn bản bạn muốn giữ và tham khảo nhóm đó theo số trong mẫu thay thế:

re.sub(r'\s([?.!"](?:\s|$))', r'\1', text)

Lưu ý rằng tôi đã sử dụng chuỗi RAW

x=re.search('\s[\?\.\!\"]\s',text)
1 để tránh phải sử dụng quá nhiều dấu gạch chéo ngược; Tuy nhiên, bạn không cần phải thêm rất nhiều.

Tôi cũng điều chỉnh trận đấu cho không gian sau; Bây giờ nó khớp với một không gian hoặc kết thúc của chuỗi.

Demo:

>>> import re
>>> text = "This text . Is to test . How it works ! Will it! Or won't it ? Hmm ?"
>>> re.sub(r'\s([?.!"](?:\s|$))', r'\1', text)
"This text. Is to test. How it works! Will it! Or won't it? Hmm?"

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

Martijn Pieters ♦ Martijn PietersMartijn Pieters

996K277 Huy hiệu vàng3922 Huy hiệu bạc3263 Huy hiệu Đồng277 gold badges3922 silver badges3263 bronze badges

4

Sử dụng

x=re.search('\s[\?\.\!\"]\s',text)
2 thay vì
x=re.search('\s[\?\.\!\"]\s',text)
3.

>>> text = "This text . Is to test . How it works ! Will it! Or won't it ? Hmm ?"
>>> re.sub(r'\s+([?.!"])', r'\1', text)
"This text. Is to test. How it works! Will it! Or won't it? Hmm?"

Bạn không cần phải trốn thoát

x=re.search('\s[\?\.\!\"]\s',text)
4,
x=re.search('\s[\?\.\!\"]\s',text)
5,
x=re.search('\s[\?\.\!\"]\s',text)
6,
x=re.search('\s[\?\.\!\"]\s',text)
7 bên trong
x=re.search('\s[\?\.\!\"]\s',text)
8 Becaue Các nhân vật đặc biệt mất ý nghĩa của chúng bên trong
x=re.search('\s[\?\.\!\"]\s',text)
8.

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

Martijn Pieters ♦ Martijn Pietersfalsetru

996K277 Huy hiệu vàng3922 Huy hiệu bạc3263 Huy hiệu Đồng60 gold badges692 silver badges614 bronze badges

2

Dữ liệu văn bản thô thường không được định dạng đúng và chứa nhiều khoảng trắng dự phòng ở đầu và cuối chuỗi cũng như các ký tự trống kép trong văn bản.

Trong hướng dẫn sau đây, tôi sẽ giải thích cách loại bỏ các không gian như vậy khỏi một chuỗi trong Python. Trước tiên, hãy xem xét các kịch bản có thể có:

Hướng dẫn how to remove space before period in python - cách xóa khoảng trắng trước dấu chấm trong python

Như bạn có thể thấy trong đồ họa, chúng ta có thể loại bỏ các khoảng trống ở đầu và kết thúc (xem Ví dụ 1); chỉ ở cuối (xem ví dụ 2); chỉ ở đầu (xem Ví dụ 3); Không gian trùng lặp (xem ví dụ 4); và tất cả các không gian (xem Ví dụ 5).

Vì vậy, nếu bạn muốn tìm hiểu thêm về việc loại bỏ khoảng trắng, hãy tiếp tục đọc

Ví dụ 1: Xóa khoảng trắng từ đầu và cuối chuỗi trong python (chức năng dải)

Hãy xem xét chuỗi ví dụ sau trong Python (tức là Python 3):

my_string = "  This   sentence    contains many redundant    whitespaces    !!!  "

Chuỗi ví dụ của chúng tôi chứa một câu có khoảng trắng ở đầu và cuối (cũng như hai không gian kép trong chuỗi, nhưng nhiều hơn về sau đó).

Để cắt tất cả các không gian trước và sau bản án của chúng tôi, chúng tôi có thể sử dụng chức năng dải trong Python:

my_string_1 = my_string.strip()                          # Apply strip function
print(my_string_1)                                       # Print updated string
# "This   sentence    contains many redundant    whitespaces    !!!"

Dễ dàng Breezy! Vậy điều gì sẽ xảy ra nếu chúng ta chỉ muốn loại bỏ các khoảng trống ở bên phải hoặc bên trái của chuỗi của chúng ta? Đó là những gì tôi sẽ cho bạn thấy trong ví dụ 2 và 3!

Ví dụ 2: Trim Whitespace ở phía bên phải của Chuỗi (Hàm Rstrip)

Với chức năng dải Python, chúng tôi có thể xóa tất cả các không gian bên trái và bên phải (như trong ví dụ 1). Tuy nhiên, đôi khi bạn có thể muốn giữ khoảng trắng ở đầu và chỉ loại bỏ không gian ở cuối.

Đối với nhiệm vụ này, chúng ta có thể sử dụng chức năng Rstrip Python:

my_string_2 = my_string.rstrip()                         # Apply rstrip function
print(my_string_2)                                       # Print updated string
# "  This   sentence    contains many redundant    whitespaces    !!!"

Hãy xem các trích dẫn ở cuối câu của chúng tôi: chúng tôi đã loại bỏ tất cả các không gian theo dõi, nhưng giữ không gian ngay từ đầu.

Vì vậy, chúng ta có thể làm điều đó theo cách khác không? Vì chúng ta có thể…

Ví dụ 3: Xóa khoảng trống ở phía bên trái của chuỗi (hàm Lstrip)

Để loại bỏ không gian hàng đầu trước một câu, chúng ta có thể sử dụng lệnh Lstrip (chính xác như chúng ta đã làm trước đây với Rstrip):

my_string_3 = my_string.lstrip()                         # Apply lstrip function
print(my_string_3)                                       # Print updated string
# "This   sentence    contains many redundant    whitespaces    !!!  "

Đó là nó! Nhưng ở lại với tôi, chúng ta vẫn cần phải loại bỏ các không gian dư thừa trong văn bản

Ví dụ 4: Cách xóa thêm không gian giữa văn bản trong Python (hoạt động Re.Sub)

Cho đến nay, chúng tôi chỉ sử dụng các chức năng của gia đình thoát y. Tuy nhiên, để loại bỏ các ký tự trống trùng lặp giữa các từ trong câu của chúng tôi, chúng tôi cần áp dụng hoạt động Re.Sub:

import re                                                # Import regular expressions
my_string_4 = re.sub(" +", " ",my_string)                # Apply sub function
print(my_string_4)                                       # Print updated string
# " This sentence contains many redundant whitespaces !!! "

Bạn muốn trích xuất nhiều khoảng trắng hơn ?! Như chỉ thị…

Ví dụ 5: Loại bỏ tất cả khoảng trắng (chức năng thay thế)

Để xóa tất cả các khoảng trắng của văn bản của chúng tôi, chúng tôi có thể áp dụng chức năng thay thế:

x=re.search('\s[\?\.\!\"]\s',text)
0

Điều đó không có ý nghĩa gì trong trường hợp cụ thể của chúng tôi mặc dù 😉

VIDEO: Ví dụ về khoảng trắng bổ sung & Cách loại bỏ dấu chấm câu trong Python

Bạn có cần thêm một vài ví dụ cho chức năng dải Python (xem thêm ví dụ 1-3 của hướng dẫn này) không? Sau đó, hãy xem video YouTube sau đây của Ethan Weed. Trong video, anh ta đang đưa ra nhiều ví dụ hơn cho chức năng dải và cũng giải thích cách dải dấu chấm câu. Các ví dụ được hiển thị trực tiếp trong phần mềm lập trình Python.

Đọc thêm

  • Cách xóa newline khỏi chuỗi
  • Ngôn ngữ lập trình Python