Hướng dẫn how to split two words in python - cách tách hai từ trong python
re.split() Show
Đã trả lời ngày 29 tháng 6 năm 2009 lúc 17:57Jun 29, 2009 at 17:57
Gimelgimelgimel 80.2k10 Huy hiệu vàng74 Huy hiệu bạc104 Huy hiệu đồng10 gold badges74 silver badges104 bronze badges 7 Một trường hợp biểu thức chính quy được chứng minh:
Bartoszkp 33,8K13 Huy hiệu vàng103 Huy hiệu bạc128 Huy hiệu đồng13 gold badges103 silver badges128 bronze badges Đã trả lời ngày 29 tháng 6 năm 2009 lúc 17:56Jun 29, 2009 at 17:56
RichiehindlerichiehindleRichieHindle 263K46 Huy hiệu vàng353 Huy hiệu bạc394 Huy hiệu Đồng46 gold badges353 silver badges394 bronze badges 18 Một cách nhanh chóng khác để làm điều này mà không có regexp là thay thế các ký tự trước, như dưới đây:
Đã trả lời ngày 27 tháng 8 năm 2011 lúc 16:10Aug 27, 2011 at 16:10
Louis Lclouis LcLouis LC 5.2041 Huy hiệu vàng16 Huy hiệu bạc13 Huy hiệu đồng1 gold badge16 silver badges13 bronze badges 8 Vì vậy, nhiều câu trả lời, nhưng tôi không thể tìm thấy bất kỳ giải pháp nào hiệu quả những gì tiêu đề của các câu hỏi theo nghĩa đen yêu cầu (chia tách trên nhiều bộ tách có thể có, thay vào đó, nhiều câu trả lời chia cho bất cứ điều gì không phải là một từ khác nhau). Vì vậy, đây là một câu trả lời cho câu hỏi trong tiêu đề, dựa vào mô -đun 2 hiệu quả của Python:
where:
Điều này chính xác là "chia tách với nhiều dấu phân cách", như được hỏi trong tiêu đề câu hỏi. Giải pháp này còn miễn nhiễm với các vấn đề với các ký tự không phải ASCII trong các từ được tìm thấy trong một số giải pháp khác (xem nhận xét đầu tiên cho câu trả lời của Ghostdog74). Mô -đun 2 hiệu quả hơn nhiều (về tốc độ và điểm hòa) so với thực hiện các vòng lặp và thử nghiệm Python "bằng tay"!Đã trả lời ngày 18 tháng 5 năm 2014 lúc 9:43May 18, 2014 at 9:43
Eric o lebigoteric o lebigotEric O Lebigot 87.9K47 Huy hiệu vàng213 Huy hiệu bạc257 Huy hiệu Đồng47 gold badges213 silver badges257 bronze badges 13 Một cách khác, không có regex
Terrya 57K11 Huy hiệu vàng117 Huy hiệu bạc138 Huy hiệu đồng11 gold badges117 silver badges138 bronze badges Đã trả lời ngày 21 tháng 7 năm 2009 lúc 6:02Jul 21, 2009 at 6:02
ghostdog74ghostdog74ghostdog74 314K55 Huy hiệu vàng252 Huy hiệu bạc339 Huy hiệu Đồng55 gold badges252 silver badges339 bronze badges 5 Pro-tip: Sử dụng 2 cho các hoạt động chuỗi nhanh nhất mà Python có.Một số bằng chứng ... Đầu tiên, cách chậm (xin lỗi pprzemek):
Tiếp theo, chúng tôi sử dụng 3 (như được đưa ra bởi câu trả lời được đề xuất). Nhanh hơn nhiều:
Cuối cùng, chúng tôi sử dụng 4:
Explanation: 2 được triển khai trong C và không giống như nhiều chức năng thao tác chuỗi trong Python, 2 không tạo ra một chuỗi mới. Vì vậy, nó nhanh như bạn có thể nhận được để thay thế chuỗi.does not produce a new string. So it's about as fast as you can get for string substitution.Tuy nhiên, có một chút khó xử, vì nó cần một bảng dịch để thực hiện phép thuật này. Bạn có thể tạo một bảng dịch với chức năng tiện lợi 7. Mục tiêu ở đây là dịch tất cả các ký tự không mong muốn sang không gian. Một thay thế một cho một. Một lần nữa, không có dữ liệu mới được sản xuất. Vì vậy, điều này là nhanh chóng!fast!Tiếp theo, chúng tôi sử dụng 8 cũ tốt. 8 theo mặc định sẽ hoạt động trên tất cả các ký tự khoảng trắng, nhóm chúng lại với nhau để chia. Kết quả sẽ là danh sách các từ mà bạn muốn. Và cách tiếp cận này nhanh hơn gần 4 lần so với 3!
Đã trả lời ngày 30 tháng 8 năm 2012 lúc 4:05Aug 30, 2012 at 4:05
DavedaveDave 3.17029 Huy hiệu bạc26 Huy hiệu đồng29 silver badges26 bronze badges 5 Tôi đã có một vấn đề nan giải tương tự và không muốn sử dụng mô -đun 'Re'.
Georgy 10,8K7 Huy hiệu vàng62 Huy hiệu bạc68 Huy hiệu Đồng7 gold badges62 silver badges68 bronze badges Đã trả lời ngày 26 tháng 5 năm 2010 lúc 9:31May 26, 2010 at 9:31
pprzemekpprzemekpprzemek 2.4052 huy hiệu vàng25 Huy hiệu bạc25 Huy hiệu đồng2 gold badges25 silver badges25 bronze badges 3 Đầu tiên, tôi muốn đồng ý với những người khác rằng các giải pháp dựa trên Regex hoặc 1 là hiệu suất nhất. Đối với trường hợp sử dụng của tôi, hiệu suất của chức năng này không đáng kể, vì vậy tôi muốn thêm những ý tưởng mà tôi đã xem xét với các tiêu chí đó.Mục tiêu chính của tôi là khái quát hóa các ý tưởng từ một số câu trả lời khác thành một giải pháp có thể hoạt động cho các chuỗi chứa nhiều hơn chỉ là các từ regex (tức là, danh sách đen của tập hợp con của ký tự dấu câu so với các ký tự từ trắng). Lưu ý rằng, trong bất kỳ cách tiếp cận nào, người ta cũng có thể xem xét sử dụng 2 thay cho danh sách được xác định thủ công.Tùy chọn 1 - Re.SubTôi đã rất ngạc nhiên khi thấy không có câu trả lời cho đến nay sử dụng re.sub (...). Tôi thấy nó là một cách tiếp cận đơn giản và tự nhiên cho vấn đề này.
Trong giải pháp này, tôi đã lồng tiếng cho 3 bên trong 4 - nhưng nếu hiệu suất là rất quan trọng, thì việc biên dịch regex bên ngoài có thể có lợi - đối với trường hợp sử dụng của tôi, sự khác biệt không đáng kể, vì vậy tôi thích sự đơn giản và khả năng đọc.Tùy chọn 2 - Str.ReplaceĐây là một vài dòng nữa, nhưng nó có lợi ích là có thể mở rộng mà không phải kiểm tra xem bạn có cần phải thoát khỏi một nhân vật nhất định trong Regex hay không. 0Thay vào đó, thật tuyệt khi có thể ánh xạ str.replace vào chuỗi, nhưng tôi không nghĩ nó có thể được thực hiện với các chuỗi bất biến và trong khi ánh xạ vào danh sách các ký tự sẽ hoạt động, chạy mọi sự thay thế đối với mọi nhân vật Nghe có vẻ quá mức. (Chỉnh sửa: Xem tùy chọn tiếp theo cho một ví dụ chức năng.) Tùy chọn 3 - Functools.Reduce(Trong Python 2, 5 có sẵn trong không gian tên toàn cầu mà không cần nhập nó từ functools.) 1Đã trả lời ngày 10 tháng 11 năm 2016 lúc 17:31Nov 10, 2016 at 17:31
2 2Sau đó, điều này trở thành một lớp ba: 3Giải trình Đây là những gì trong Haskell được gọi là danh sách Monad. Ý tưởng đằng sau Monad là một lần "trong Monad" You "ở trong Monad" cho đến khi một cái gì đó đưa bạn ra ngoài. Ví dụ: trong Haskell, giả sử bạn ánh xạ hàm Python 6 qua danh sách. Nếu kết quả là một danh sách, nó sẽ được nối vào danh sách tại chỗ, vì vậy bạn sẽ nhận được một cái gì đó như 7. Điều này được gọi là tính năng bản đồ (hoặc bản đồ, hoặc có thể là một cái gì đó tương tự). Ý tưởng ở đây là bạn đã có thao tác này mà bạn đang áp dụng (chia tay mã thông báo) và bất cứ khi nào bạn làm điều đó, bạn sẽ tham gia kết quả vào danh sách.Bạn có thể tóm tắt điều này thành một hàm và có 8 theo mặc định.Ưu điểm của phương pháp này:
Đã trả lời ngày 5 tháng 5 năm 2011 lúc 8:35May 5, 2011 at 8:35
Ninjageckoninjageckoninjagecko 85.3K24 Huy hiệu vàng134 Huy hiệu bạc143 Huy hiệu đồng24 gold badges134 silver badges143 bronze badges 5 Tôi thích Re, nhưng đây là giải pháp của tôi mà không có nó:re, but here is my solution without it: 4Tháng 9 Về cơ bản nó giống như is a method used by 'in' operator. Basically it is the same as 5Nhưng ở đây thuận tiện hơn. Groupby có chuỗi và chức năng của chúng tôi. Nó chia chuỗi theo nhóm bằng cách sử dụng hàm đó: bất cứ khi nào một giá trị chức năng thay đổi - một nhóm mới được tạo. Vì vậy, sep .__ chứa chính xác là những gì chúng ta cần. gets our string and function. It splits string in groups using that function: whenever a value of function changes - a new group is generated. So, sep.__contains__ is exactly what we need. Groupby trả về một chuỗi các cặp, trong đó cặp [0] là kết quả của chức năng của chúng tôi và cặp [1] là một nhóm. Sử dụng 'Nếu không phải K', chúng tôi lọc ra các nhóm với các dấu phân cách (vì kết quả của sep .__ chứa __ là đúng trên các dấu phân cách). Chà, đó là tất cả - bây giờ chúng tôi có một chuỗi các nhóm trong đó mỗi nhóm là một từ (nhóm thực sự là một điều đáng tin nên chúng tôi sử dụng tham gia để chuyển đổi nó thành chuỗi). returns a sequence of pairs, where pair[0] is a result of our function and pair[1] is a group. Using 'if not k' we filter out groups with separators (because a result of sep.__contains__ is True on separators). Well, that's all - now we have a sequence of groups where each one is a word (group is actually an iterable so we use join to convert it to string). Giải pháp này khá chung, vì nó sử dụng một hàm để tách chuỗi (bạn có thể chia theo bất kỳ điều kiện nào bạn cần). Ngoài ra, nó không tạo ra các chuỗi/danh sách trung gian (bạn có thể xóa tham gia và biểu thức sẽ trở nên lười biếng, vì mỗi nhóm là một trình lặp lại)join and the expression will become lazy, since each group is an iterator) Đã trả lời ngày 6 tháng 10 năm 2013 lúc 17:30Oct 6, 2013 at 17:30
MonitoriusMonitoriusmonitorius 3.2961 Huy hiệu vàng19 Huy hiệu bạc17 Huy hiệu đồng1 gold badge19 silver badges17 bronze badges Sử dụng thay thế hai lần: 6kết quả trong: 7
Đã trả lời ngày 30 tháng 3 năm 2012 lúc 13:27Mar 30, 2012 at 13:27
Jeroenjeroenjeroen Huy hiệu 611 Bạc1 Huy hiệu Đồng1 silver badge1 bronze badge 0 thử cái này: 8cái này sẽ in 9Đã trả lời ngày 29 tháng 6 năm 2009 lúc 18:01Jun 29, 2009 at 18:01
Corey Goldbergcorey GoldbergCorey Goldberg 57.1K27 Huy hiệu vàng123 Huy hiệu bạc141 Huy hiệu đồng27 gold badges123 silver badges141 bronze badges Trong Python 3, bạn có thể sử dụng phương pháp từ PY4E - Python cho mọi người.
5
Bạn có thể thấy "dấu câu": 9Ví dụ của bạn: 0Để biết thêm thông tin, bạn có thể tham khảo:
Đã trả lời ngày 15 tháng 7 năm 2018 lúc 15:09Jul 15, 2018 at 15:09
2
Thay vì sử dụng chức năng mô -đun RE RE.Split, bạn có thể đạt được kết quả tương tự bằng phương thức sê -ri.Str.Split của gấu trúc. Đầu tiên, tạo một chuỗi với chuỗi trên và sau đó áp dụng phương thức cho chuỗi. 2Tham số Pat lấy các dấu phân cách và trả về chuỗi phân chia dưới dạng một mảng. Ở đây hai phân định được thông qua bằng cách sử dụng | (hoặc toán tử). Đầu ra như sau: 3Đã trả lời ngày 10 tháng 9 năm 2018 lúc 15:32Sep 10, 2018 at 15:32
1 Tôi đang làm lại cho mình với Python và cần điều tương tự. Giải pháp Findall có thể tốt hơn, nhưng tôi đã đưa ra điều này: 1
Antyrat Phim thương hiệu vàng 27.2k99 gold badges75 silver badges76 bronze badges Đã trả lời ngày 20 tháng 4 năm 2012 lúc 16:53Apr 20, 2012 at 16:53
Leon Starrleon StarrLeon Starr 4421 Huy hiệu vàng4 Huy hiệu bạc9 Huy hiệu đồng1 gold badge4 silver badges9 bronze badges 1 Sử dụng maketrans và dịch bạn có thể làm điều đó một cách dễ dàng và gọn gàng 2Đã trả lời ngày 3 tháng 3 năm 2018 lúc 23:59Mar 3, 2018 at 23:59
Ritesh Sinharitesh SinhaRitesh Sinha 8003 Huy hiệu vàng20 Huy hiệu bạc47 Huy hiệu đồng3 gold badges20 silver badges47 bronze badges 1 Trước hết, tôi không nghĩ rằng ý định của bạn là thực sự sử dụng dấu chấm câu như là người phân định trong các chức năng phân chia. Mô tả của bạn cho thấy rằng bạn chỉ đơn giản muốn loại bỏ dấu câu từ các chuỗi kết quả. Tôi bắt gặp điều này khá thường xuyên và giải pháp thông thường của tôi không yêu cầu RE. Chức năng Lambda One-Liner w/ Danh sách hiểu:(Yêu cầu 4): 3Chức năng (truyền thống)Là một chức năng truyền thống, đây vẫn chỉ là hai dòng có khả năng hiểu danh sách (ngoài 4): 4Nó cũng sẽ tự nhiên để lại các cơn co thắt và các từ hyphenated còn nguyên vẹn. Bạn luôn có thể sử dụng 6 để biến dấu gạch nối thành không gian trước khi chia.Chức năng chung w/o Lambda hoặc danh sách hiểuĐối với một giải pháp chung hơn (nơi bạn có thể chỉ định các ký tự để loại bỏ) và không có sự hiểu biết danh sách, bạn sẽ nhận được: 5Tất nhiên, bạn luôn có thể khái quát chức năng Lambda cho bất kỳ chuỗi ký tự được chỉ định nào. Đã trả lời ngày 4 tháng 11 năm 2014 lúc 19:17Nov 4, 2014 at 19:17
CosmicflukecosmicflukecosmicFluke 3561 Huy hiệu bạc10 Huy hiệu đồng1 silver badge10 bronze badges Tôi đã phải đưa ra giải pháp của riêng mình vì mọi thứ tôi đã thử nghiệm cho đến nay đều thất bại tại một số điểm. 6Nó dường như đang hoạt động tốt, ít nhất là cho các ví dụ dưới đây. 7Đã trả lời ngày 23 tháng 5 năm 2019 lúc 23:06May 23, 2019 at 23:06
Gỗ gỗWood 1678 Huy hiệu Đồng8 bronze badges Một cách khác để đạt được điều này là sử dụng Bộ công cụ ngôn ngữ tự nhiên (NLTK). 8Bản in này: 9Hạn chế lớn nhất của phương pháp này là bạn cần cài đặt gói NLTK. Những lợi ích là bạn có thể làm rất nhiều thứ thú vị với phần còn lại của gói NLTK sau khi bạn nhận được mã thông báo của mình.
Martlark 13.5K12 Huy hiệu vàng80 Huy hiệu bạc96 Huy hiệu đồng12 gold badges80 silver badges96 bronze badges Đã trả lời ngày 29 tháng 6 năm 2009 lúc 18:51Jun 29, 2009 at 18:51
tgraytgraytgray 8,5965 Huy hiệu vàng35 Huy hiệu bạc40 Huy hiệu đồng5 gold badges35 silver badges40 bronze badges Có vấn đề tương tự như @ooboo và tìm chủ đề này @Ghostdog74 đã truyền cảm hứng cho tôi, có lẽ ai đó tìm thấy giải pháp của tôi hữu ích 9Nhập một cái gì đó vào Place Space và tách bằng cách sử dụng cùng một ký tự nếu bạn không muốn phân chia tại không gian. Đã trả lời ngày 15 tháng 3 năm 2011 lúc 10:12Mar 15, 2011 at 10:12
Badasbadasbadas 192 Huy hiệu Đồng2 bronze badges 1 Trước hết, luôn luôn sử dụng re.compile () trước khi thực hiện bất kỳ hoạt động regex nào trong một vòng lặp vì nó hoạt động nhanh hơn hoạt động bình thường. Vì vậy, đối với vấn đề của bạn trước tiên biên dịch mẫu và sau đó thực hiện hành động trên nó. 0
Lovasoa 5.98632 Huy hiệu bạc41 Huy hiệu đồng32 silver badges41 bronze badges Đã trả lời ngày 2 tháng 6 năm 2015 lúc 7:06Jun 2, 2015 at 7:06
ShrikantshrikantShrikant 3736 Huy hiệu bạc7 Huy hiệu Đồng6 silver badges7 bronze badges Đây là câu trả lời với một số giải thích. 1Hoặc trong một dòng, chúng ta có thể làm như thế này: 2Cập nhật câu trả lời Đã trả lời ngày 4 tháng 6 năm 2016 lúc 19:35Jun 4, 2016 at 19:35
0 Tạo một hàm lấy làm hai chuỗi đầu vào (chuỗi nguồn sẽ được phân chia và chuỗi phân tách danh sách phân chia) và xuất ra một danh sách các từ phân chia: 3
Fpietka 1,0071 Huy hiệu vàng10 Huy hiệu bạc22 Huy hiệu đồng1 gold badge10 silver badges22 bronze badges Đã trả lời ngày 10 tháng 5 năm 2017 lúc 0:58May 10, 2017 at 0:58
Tôi thích giải pháp của PPRZEMK vì nó không cho rằng các dấu phân cách là các ký tự đơn và nó không cố gắng tận dụng một regex (sẽ không hoạt động tốt nếu số lượng dấu phân cách được phát điên dài). Đây là phiên bản dễ đọc hơn của giải pháp trên cho rõ ràng: 4Đã trả lời ngày 23 tháng 5 năm 2019 lúc 17:03May 23, 2019 at 17:03
EveretteverettEverett 7.5154 Huy hiệu vàng32 Huy hiệu bạc43 Huy hiệu đồng4 gold badges32 silver badges43 bronze badges Đây là sự phân chia của tôi với nhiều Deliminaters: 5Đã trả lời ngày 6 tháng 8 năm 2011 lúc 11:38Aug 6, 2011 at 11:38
MartlarkmartlarkMartlark 13.5K12 Huy hiệu vàng80 Huy hiệu bạc96 Huy hiệu đồng12 gold badges80 silver badges96 bronze badges Đã trả lời ngày 29 tháng 6 năm 2009 lúc 18:51 tgraytgray 6
8,5965 Huy hiệu vàng35 Huy hiệu bạc40 Huy hiệu đồng Có vấn đề tương tự như @ooboo và tìm chủ đề này @Ghostdog74 đã truyền cảm hứng cho tôi, có lẽ ai đó tìm thấy giải pháp của tôi hữu ích42 gold badges127 silver badges195 bronze badges Nhập một cái gì đó vào Place Space và tách bằng cách sử dụng cùng một ký tự nếu bạn không muốn phân chia tại không gian.Mar 9, 2012 at 8:30
Đã trả lời ngày 15 tháng 3 năm 2011 lúc 10:12nemozhp Badasbadas1 silver badge7 bronze badges 1 192 Huy hiệu Đồng 7Trước hết, luôn luôn sử dụng re.compile () trước khi thực hiện bất kỳ hoạt động regex nào trong một vòng lặp vì nó hoạt động nhanh hơn hoạt động bình thường.Apr 29, 2013 at 5:32
Vì vậy, đối với vấn đề của bạn trước tiên biên dịch mẫu và sau đó thực hiện hành động trên nó. 8Đã trả lời ngày 7 tháng 2 năm 2014 lúc 23:15Feb 7, 2014 at 23:15
9Đây là cách sử dụng: 0
Đã trả lời ngày 24 tháng 12 năm 2013 lúc 2:17Dec 24, 2013 at 2:17
Nếu bạn muốn một thao tác đảo ngược (bảo tồn các dấu phân cách), bạn có thể sử dụng chức năng này: 1Đã trả lời ngày 22 tháng 1 năm 2018 lúc 8:25Jan 22, 2018 at 8:25
Nathan Bnathan bNathan B 1.4941 Huy hiệu vàng16 Huy hiệu bạc14 Huy hiệu đồng1 gold badge16 silver badges14 bronze badges Làm thế nào để bạn chia từ trong Python?Phương thức chia () chia một chuỗi vào một danh sách. Bạn có thể chỉ định phân tách, dấu phân cách mặc định là bất kỳ khoảng trắng nào. Lưu ý: Khi MaxSplit được chỉ định, danh sách sẽ chứa số lượng phần tử được chỉ định cộng với một.. You can specify the separator, default separator is any whitespace. Note: When maxsplit is specified, the list will contain the specified number of elements plus one.
Làm thế nào để bạn chia một câu thành hai từ trong Python?Chia một câu thành các từ:.Danh sách này chứa 5 mục là hàm Len () thể hiện.Ngược lại, Len () trên Mary, trả về số lượng ký tự trong chuỗi (bao gồm cả không gian).. split()
split() splits mary on whitespce, and the returned result is a list of words in mary. This list contains 5 items as the len() function demonstrates. len() on mary, by contrast, returns the number of characters in the string (including the spaces).
Làm thế nào để bạn chia hai giá trị trong Python?Làm thế nào để sử dụng Split trong Python.. Tạo một mảng.x = 'màu xanh lam, đỏ, màu xanh lá cây'. Sử dụng chức năng phân chia python và phân tách.x.Tách ((, người) - dấu phẩy được sử dụng làm dấu phân cách.Điều này sẽ chia chuỗi thành một mảng chuỗi khi nó tìm thấy dấu phẩy .. Kết quả.['màu xanh', 'màu đỏ', 'màu xanh lá cây']. Làm thế nào để bạn chia từ trong một chuỗi?Phương thức Split () chia một chuỗi thành một mảng các chuỗi con.Phương thức chia () trả về mảng mới.Phương thức chia () không thay đổi chuỗi gốc.Nếu ("") được sử dụng làm dấu phân cách, chuỗi được phân chia giữa các từ.. The split() method returns the new array. The split() method does not change the original string. If (" ") is used as separator, the string is split between words. |