2008-12-17 13 views
11

मैं एक या अधिक विभाजक वर्णों का उपयोग करके एक स्ट्रिंग को विभाजित करना चाहता हूं।कई अलग-अलग वर्णों पर विभाजित स्ट्रिंग

उदा। "एक बी सी", "" और "।" पर विभाजित सूची ["ए", "बी", "सी"] देगी।

फिलहाल, मैं इसे करने के लिए मानक पुस्तकालय में कुछ भी नहीं देख सकता, और मेरे अपने प्रयास थोड़ा बेकार हैं। जैसे

def my_split(string, split_chars): 
    if isinstance(string_L, basestring): 
     string_L = [string_L] 
    try: 
     split_char = split_chars[0] 
    except IndexError: 
     return string_L 

    res = [] 
    for s in string_L: 
     res.extend(s.split(split_char)) 
    return my_split(res, split_chars[1:]) 

print my_split("a b.c", [' ', '.']) 

भयानक! कोई बेहतर सुझाव?

+0

है कि "एक ई.पू." (एक अंतरिक्ष ख ग डॉट)? क्या आपके पास अधिक नमूना इनपुट है? – OscarRyz

+0

हाँ यह सही है। मैंने प्रश्न को थोड़ा स्पष्ट –

उत्तर

37
>>> import re 
>>> re.split('[ .]', 'a b.c') 
['a', 'b', 'c'] 
+0

होने के लिए अद्यतन किया है और याद रखें, उन पात्रों को स्क्वायर ब्रैकेट [] में होना चाहिए। मैं इसके बारे में भूल गया और कम से कम 20 मिनट खो दिया। ब्रैकेट्स के साथ 'स्प्लिट()' पूर्ण स्ट्रिंग के अनुसार विभाजित होता है। – noisy

2

यह एक सूची में पहले विभाजक के साथ सभी विभाजकों को प्रतिस्थापित करता है, और फिर उस चरित्र का उपयोग करके "विभाजन" करता है।

def split(string, divs): 
    for d in divs[1:]: 
     string = string.replace(d, divs[0]) 
    return string.split(divs[0]) 

उत्पादन:

>>> split("a b.c", " .") 
['a', 'b', 'c'] 

>>> split("a b.c", ".") 
['a b', 'c'] 

मुझे लगता है कि 'फिर' समाधान हालांकि पसंद है।

1

बहुत तेजी से नहीं है, लेकिन काम करता है:

def my_split(text, seps): 
    for sep in seps: 
    text = text.replace(sep, seps[0]) 
    return text.split(seps[0]) 
संबंधित मुद्दे