Hướng dẫn python re split remove delimiter - python tách lại loại bỏ dấu phân cách

Vì vậy, tôi muốn chia văn bản này thành các câu.

s = "You! Are you Tom? I am Danny."

Vì vậy, tôi nhận được:

["You!", "Are you Tom?", "I am Danny."]

Đó là tôi muốn chia văn bản bằng regex '[.!\?]' mà không cần xóa các dấu phân cách. Cách pythonic nhất để đạt được điều này trong Python là gì?

Tôi nhận thức được những câu hỏi này:

JS String.Split () mà không xóa các dấu phân cách

Python split () mà không xóa dấu phân cách

Nhưng vấn đề của tôi có các phân định khác nhau (

["You!", "Are you Tom?", "I am Danny."]
0) làm phức tạp vấn đề.

Hướng dẫn python re split remove delimiter - python tách lại loại bỏ dấu phân cách

wjandrea

25.2k8 Huy hiệu vàng53 Huy hiệu bạc74 Huy hiệu đồng8 gold badges53 silver badges74 bronze badges

Khi được hỏi ngày 29 tháng 5 năm 2017 lúc 14:11May 29, 2017 at 14:11

Hướng dẫn python re split remove delimiter - python tách lại loại bỏ dấu phân cách

Bạn có thể sử dụng

["You!", "Are you Tom?", "I am Danny."]
1 với regex
["You!", "Are you Tom?", "I am Danny."]
2; Bộ định lượng lười biếng
["You!", "Are you Tom?", "I am Danny."]
3 đảm bảo mỗi mẫu khớp với dấu phân cách cụ thể mà bạn muốn khớp với:

import re

s = """You! Are you Tom? I am Danny."""
re.findall('.*?[.!\?]', s)
# ['You!', ' Are you Tom?', ' I am Danny.']

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

Hướng dẫn python re split remove delimiter - python tách lại loại bỏ dấu phân cách

PsidompsidomPsidom

202K27 Huy hiệu vàng314 Huy hiệu bạc335 Huy hiệu đồng27 gold badges314 silver badges335 bronze badges

1

Nếu Python được hỗ trợ chia tách bởi các trận đấu có độ dài bằng không, bạn có thể đạt được điều này bằng cách khớp một chuỗi trống trước một trong các dấu phân cách:

(?<=[.!?])

Bản demo: https://regex101.com/r/zldxr1/1

Thật không may, Python không hỗ trợ phân chia bởi các trận đấu có độ dài bằng không. Tuy nhiên, giải pháp vẫn có thể hữu ích trong các ngôn ngữ khác hỗ trợ tìm kiếm.

Tuy nhiên, dựa trên các mẫu dữ liệu đầu vào/đầu ra của bạn, bạn cần phải phân chia theo các khoảng trống trước một trong các dấu phân cách. Vì vậy, Regex sẽ là:

(?<=[.!?])\s+

Bản demo: https://regex101.com/r/zldxr1/2

Demo Python: https://ideone.com/z6nzi5

Nếu các không gian là tùy chọn, giải pháp

["You!", "Are you Tom?", "I am Danny."]
1 được đề xuất bởi @psidom là loại tốt nhất, tôi tin.

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

Dmitry Egorovdmitry EgorovDmitry Egorov

9.4323 huy hiệu vàng24 Huy hiệu bạc40 Huy hiệu đồng3 gold badges24 silver badges40 bronze badges

2

Nói đúng ra, bạn không muốn chia tay '!?.', Nhưng thay vào đó là khoảng trắng theo sau các nhân vật đó. Điều sau đây sẽ hoạt động:

>>> import re
>>> re.split(r'(?<=[\.\!\?])\s*', s)
['You!', 'Are you Tom?', 'I am Danny.']

Điều này phân chia trên khoảng trắng, nhưng chỉ khi nó được đi trước bởi a.,!, Hoặc? tính cách.

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

Hướng dẫn python re split remove delimiter - python tách lại loại bỏ dấu phân cách

1

Nếu bạn thích sử dụng Phương thức chia hơn là khớp, một giải pháp chia theo nhóm

splitted = filter(None, re.split( r'(.*?[\.!\?])', s))

Bộ lọc loại bỏ các chuỗi trống nếu có.

Điều này sẽ hoạt động ngay cả khi không có khoảng trắng giữa các câu hoặc nếu bạn cần câu dấu bắt kết thúc bằng một dấu chấm câu khác, chẳng hạn như elip unicode (hoặc không có bất kỳ điều gì)

Thậm chí có thể giữ cho bạn như vậy (với việc thoát khỏi hiệu chỉnh và thêm dấu ngoặc đơn).

splitted = filter(None, re.split( r'([\.!\?])', s))

Sau đó hợp nhất và các yếu tố không đồng đều và loại bỏ các khoảng trống bổ sung

Python split () mà không xóa dấu phân cách

Nhưng vấn đề của tôi có các phân định khác nhau (

["You!", "Are you Tom?", "I am Danny."]
0) làm phức tạp vấn đề.May 29, 2017 at 14:22

wjandreaSerge

25.2k8 Huy hiệu vàng53 Huy hiệu bạc74 Huy hiệu đồng3 gold badges14 silver badges34 bronze badges

Khi được hỏi ngày 29 tháng 5 năm 2017 lúc 14:11

import nltk   
nltk.sent_tokenize(s)

Bạn có thể sử dụng

["You!", "Are you Tom?", "I am Danny."]
1 với regex
["You!", "Are you Tom?", "I am Danny."]
2; Bộ định lượng lười biếng
["You!", "Are you Tom?", "I am Danny."]
3 đảm bảo mỗi mẫu khớp với dấu phân cách cụ thể mà bạn muốn khớp với:

Đã trả lời ngày 29 tháng 5 năm 2017 lúc 14:17Dec 29, 2017 at 17:47

Hướng dẫn python re split remove delimiter - python tách lại loại bỏ dấu phân cách

PsidompsidomAmir Imani

202K27 Huy hiệu vàng314 Huy hiệu bạc335 Huy hiệu đồng2 gold badges21 silver badges23 bronze badges

1

Làm thế nào để bạn chia tách mà không loại bỏ dấu phân cách trong Python?

Để phân chia một chuỗi mà không xóa dấu phân cách:..
Sử dụng str. phương thức chia () để chia chuỗi thành một danh sách ..
Sử dụng danh sách hiểu để lặp lại trong danh sách ..
Trên mỗi lần lặp, thêm dấu phân cách vào mục ..

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

Bạn có thể thử một cái gì đó như thế này:..
Cho các dấu phân cách D, tham gia cùng họ với một biểu thức thông thường.....
Chia chuỗi bằng cách sử dụng Regex này với Re.Split >>> s = 'Hey-you ... bạn có ổn không?'>>> ....
Tham gia tất cả các đoạn không trống trở lại với nhau >>> '' .Join (w cho w in re.split ("["+"\\".Bạn là bạn ổn '.

RE chia rẽ làm gì trong Python?

Ở đó.Chức năng phân tách () Chức năng chia chuỗi đã cho theo sự xuất hiện của một ký tự hoặc mẫu cụ thể.Khi tìm mẫu, hàm này trả về các ký tự còn lại từ chuỗi trong danh sách.splits the given string according to the occurrence of a particular character or pattern. Upon finding the pattern, this function returns the remaining characters from the string in a list.

Điều gì là phân định trong Python?

LƯU Ý: Một dấu phân cách là một chuỗi của một hoặc nhiều ký tự được sử dụng để chỉ định ranh giới giữa các vùng riêng biệt, độc lập trong văn bản thuần túy hoặc các luồng dữ liệu khác.Một ví dụ về dấu phân cách là ký tự dấu phẩy, hoạt động như một dấu phân cách trường trong một chuỗi các giá trị được phân tách bằng dấu phẩy.a sequence of one or more characters used to specify the boundary between separate, independent regions in plain text or other data streams. An example of a delimiter is the comma character, which acts as a field delimiter in a sequence of comma-separated values.