पहले स्ट्रिंग के दाएं किनारे से ;
निकालें:
s.rstrip(';').split(';')
तुम भी filter()
(जो बंद भी खाली तत्वों कि स्ट्रिंग के अंत में नहीं पाए गए फिल्टर करेगा) का उपयोग कर सकते । लेकिन उपरोक्त वास्तव में मेरी राय में सबसे साफ दृष्टिकोण है, जब आप अंत में खाली तत्व से बचना चाहते हैं, जिसके परिणामस्वरूप स्ट्रिंग के अंत में होने वाले वर्ण ";
" होते हैं।
संपादित: असल में अधिक ऊपर से सही (जहां ऊपर अभी भी filter()
का उपयोग करने से अधिक सटीक है) निम्नलिखित दृष्टिकोण है:
(s[:-1] if s.endswith(';') else s).split(';')
यह केवल अंतिम तत्व निकाला जाएगा, और केवल अगर यह खाली बनाया जाएगा।
परीक्षण तीनों समाधान आप देखेंगे कि वे विभिन्न परिणाम देते हैं:
>>> def test_solution(solution):
cases = [
'James;Joseph;Arun;',
'James;;Arun',
'James;Joseph;Arun',
';James;Joseph;Arun',
'James;Joseph;;;',
';;;',
]
for case in cases:
print '%r => %r' % (case, solution(case))
>>> test_solution(lambda s: s.split(';')) # original solution
'James;Joseph;Arun;' => ['James', 'Joseph', 'Arun', '']
'James;;Arun' => ['James', '', 'Arun']
'James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
';James;Joseph;Arun' => ['', 'James', 'Joseph', 'Arun']
'James;Joseph;;;' => ['James', 'Joseph', '', '', '']
';;;' => ['', '', '', '']
>>> test_solution(lambda s: filter(bool, s.split(';')))
'James;Joseph;Arun;' => ['James', 'Joseph', 'Arun']
'James;;Arun' => ['James', 'Arun']
'James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
';James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
'James;Joseph;;;' => ['James', 'Joseph']
';;;' => []
>>> test_solution(lambda s: s.rstrip(';').split(';'))
'James;Joseph;Arun;' => ['James', 'Joseph', 'Arun']
'James;;Arun' => ['James', '', 'Arun']
'James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
';James;Joseph;Arun' => ['', 'James', 'Joseph', 'Arun']
'James;Joseph;;;' => ['James', 'Joseph']
';;;' => ['']
>>> test_solution(lambda s: (s[:-1] if s.endswith(';') else s).split(';'))
'James;Joseph;Arun;' => ['James', 'Joseph', 'Arun']
'James;;Arun' => ['James', '', 'Arun']
'James;Joseph;Arun' => ['James', 'Joseph', 'Arun']
';James;Joseph;Arun' => ['', 'James', 'Joseph', 'Arun']
'James;Joseph;;;' => ['James', 'Joseph', '', '']
';;;' => ['', '', '']
कृपया का उपयोग नहीं करते 'str' एक चर नाम के रूप में। यह अंतर्निहित 'str' छुपाता है। –
@ मार्क बॉयर्स आपकी टिप्पणी के लिए धन्यवाद, मेरा वास्तविक var नाम अलग है। – Jisson