एक सीमांकक की पहली घटना पर एक स्ट्रिंग को विभाजित करने का सबसे अच्छा तरीका क्या होगा?
उदाहरण के लिए:
"123mango abcd mango kiwi peach"
mango
पाने के लिए पहली बार बंटवारा :
"abcd mango kiwi peach"
एक सीमांकक की पहली घटना पर एक स्ट्रिंग को विभाजित करने का सबसे अच्छा तरीका क्या होगा?
उदाहरण के लिए:
"123mango abcd mango kiwi peach"
mango
पाने के लिए पहली बार बंटवारा :
"abcd mango kiwi peach"
जवाबों:
से डॉक्स :
str.split([sep[, maxsplit]])
सीम में सीमांकक स्ट्रिंग के रूप में शब्दों की सूची लौटाएं । यदि मैक्सप्लिट दिया जाता है, तो अधिकतम मैक्सप्लिट विभाजन किया जाता है (इस प्रकार, सूची में अधिकांश
maxsplit+1
तत्व होंगे)।
s.split('mango', 1)[1]
>>> s = "123mango abcd mango kiwi peach"
>>> s.split("mango", 1)
['123', ' abcd mango kiwi peach']
>>> s.split("mango", 1)[1]
' abcd mango kiwi peach'
मेरे लिए बेहतर तरीका यह है कि:
s.split('mango', 1)[-1]
... क्योंकि अगर ऐसा होता है कि घटना स्ट्रिंग में नहीं है तो आपको मिल जाएगी " IndexError: list index out of range"
।
इसलिए -1
कोई नुकसान नहीं होगा क्योंकि होने वाली घटनाओं की संख्या पहले से ही निर्धारित है।
आप यह भी उपयोग कर सकते हैं 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 तत्व होने वाले हैं।
df.columnname[1].split('.', 1)
यह 'की पहली घटना के साथ डेटा को विभाजित करेगा।' स्ट्रिंग या डेटा फ़्रेम कॉलम मान में।
maxsplit
गिनती में पहुंचने के बाद अधिक विभाजन किया जा सकता है , तो सूची में अंतिम तत्व स्ट्रिंग के शेष (किसी भीsep
वर्ण / तार के समावेशी ) शामिल होंगे।