पहली घटना पर विभाजन


309

एक सीमांकक की पहली घटना पर एक स्ट्रिंग को विभाजित करने का सबसे अच्छा तरीका क्या होगा?

उदाहरण के लिए:

"123mango abcd mango kiwi peach"

mangoपाने के लिए पहली बार बंटवारा :

"abcd mango kiwi peach"

जवाबों:


522

से डॉक्स :

str.split([sep[, maxsplit]])

सीम में सीमांकक स्ट्रिंग के रूप में शब्दों की सूची लौटाएं । यदि मैक्सप्लिट दिया जाता है, तो अधिकतम मैक्सप्लिट विभाजन किया जाता है (इस प्रकार, सूची में अधिकांश maxsplit+1तत्व होंगे)।

s.split('mango', 1)[1]

नोट: यदि maxsplitगिनती में पहुंचने के बाद अधिक विभाजन किया जा सकता है , तो सूची में अंतिम तत्व स्ट्रिंग के शेष (किसी भी sepवर्ण / तार के समावेशी ) शामिल होंगे।
BuvinJ

64
>>> s = "123mango abcd mango kiwi peach"
>>> s.split("mango", 1)
['123', ' abcd mango kiwi peach']
>>> s.split("mango", 1)[1]
' abcd mango kiwi peach'

8
@ शिस: तो क्या। तकनीक अभी भी वही है।
इग्नासियो वाज़क्वेज़-अब्राम्स

6
@ इग्नासियो: मैं इसे इंगित कर रहा हूँ। पूरी तरह से सही एक के स्थान पर आंशिक रूप से सही उत्तर देने का कोई कारण नहीं है।
स्विस

तकनीकी रूप से सही सीमांकक मानता है। 'पहला' [1] सूचकांक है। हम सभी को संदर्भित कर रहे हैं निश्चित रूप से शून्य ith सूचकांक होगा। : डी शब्दार्थ।
इज़ाक कॉर्बेट

27

मेरे लिए बेहतर तरीका यह है कि:

s.split('mango', 1)[-1]

... क्योंकि अगर ऐसा होता है कि घटना स्ट्रिंग में नहीं है तो आपको मिल जाएगी " IndexError: list index out of range"

इसलिए -1कोई नुकसान नहीं होगा क्योंकि होने वाली घटनाओं की संख्या पहले से ही निर्धारित है।


1
जैसा कि पहले लिखा गया है कि यह घटनाओं की संख्या है जिसमें विधि विभाजन () लागू किया जा रहा है। विधि केवल पहले 'आम' स्ट्रिंग को खोजेगी और लागू करेगी।
एलेक्स

2

आप यह भी उपयोग कर सकते हैं str.partition:

>>> text = "123mango abcd mango kiwi peach"

>>> text.partition("mango")
('123', 'mango', ' abcd mango kiwi peach')

>>> text.partition("mango")[-1]
' abcd mango kiwi peach'

>>> text.partition("mango")[-1].lstrip()  # if whitespace strip-ing is needed
'abcd mango kiwi peach'

उपयोग करने str.partitionका लाभ यह है कि यह हमेशा फॉर्म में टपल लौटाता है:

(<pre>, <separator>, <post>)

इसलिए यह आउटपुट को वास्तव में लचीला बनाता है क्योंकि परिणामस्वरूप ट्यूपल में हमेशा 3 तत्व होने वाले हैं।


-2
df.columnname[1].split('.', 1)

यह 'की पहली घटना के साथ डेटा को विभाजित करेगा।' स्ट्रिंग या डेटा फ़्रेम कॉलम मान में।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.