समस्या
आपको एक स्ट्रिंग को फ़ील्ड में विभाजित करने की आवश्यकता है, लेकिन डिलीमीटर पूरे स्ट्रिंग में सुसंगत नहीं हैं।
समाधान
Python में एकाधिक डिलीमीटर की स्ट्रिंग या स्ट्रिंग्स को विभाजित करने के कई तरीके हैं। सबसे आसान और सरल दृष्टिकोण split() मेथड का उपयोग करना है, हालांकि यह सरल मामलों को संभालने के लिए है।
re.split() सामान्य split() मेथड की तुलना में जटिल स्ट्रिंग परिदृश्यों को संभालने में अधिक लचीला है।
re.split() के साथ आप सेपरेटर के लिए कई पैटर्न निर्दिष्ट कर सकते हैं। जैसा कि समाधान में दिखाया गया है, सेपरेटर या तो एक हाइफ़न (-), या व्हाइटस्पेस ( ), या कॉमा (,) के बाद मान हो सकते हैं। रेगुलर एक्सप्रेशन डॉक्यूमेंटेशन यहां पाया जा सकता है।
जब भी वह पैटर्न मिलता है, तो पूरा मैच मैच के दोनों ओर के फ़ील्ड के बीच डिलीमीटर बन जाता है।
केवल डिलीमीटर के बीच का टेक्स्ट निकालें (कोई डिलीमीटर नहीं)
उदाहरण
import re
tennis_greats = 'Roger-federer, Rafael nadal, Novak Djokovic,Andy murray'
"""
#-----------------------------------------------------------------------------
# परिदृश्य 1 - खिलाड़ियों को आउटपुट करें
# इनपुट - एकाधिक डिलीमीटर वाली स्ट्रिंग ( - , व्हाइटस्पेस)
# कोड - [] में डिलीमीटर निर्दिष्ट करें
#-----------------------------------------------------------------------------
"""
players = re.split(r'[-,\s]\s*', tennis_greats)
आउटपुट
print(f" The output is - {players}")
['Roger', 'federer', 'Rafael', 'nadal', 'Novak', 'Djokovic', 'Andy', 'murray']
डिलीमीटर के साथ डिलीमीटर के बीच का टेक्स्ट निकालें
उदाहरण
import re
tennis_greats = 'Roger-federer, Rafael nadal, Novak Djokovic,Andy murray'
"""
#-----------------------------------------------------------------------------
# परिदृश्य 2 - खिलाड़ियों और डिलीमीटर को आउटपुट करें
# इनपुट - एकाधिक डिलीमीटर वाली स्ट्रिंग ( - , व्हाइटस्पेस)
# कोड - पाइप (|) के बीच डिलीमीटर निर्दिष्ट करें
#-----------------------------------------------------------------------------
"""
players = re.split(r'(-|,|\s)\s*', tennis_greats)
आउटपुट
print(f" The output is -{players}")
['Roger', '-', 'federer', ',', 'Rafael', ' ', 'nadal', ',', 'Novak', ' ', 'Djokovic', ',', 'Andy', ' ', 'murray']