2017-02-13 2 views
0

ich diesen Code verwende, die ich aus dem ‚Netz irgendwo abgeholt, eine Textzeile in‚Worte‘zu spalten:Wiederholte regex delimiters

def SplitStringIntoWords(inputString, delimiters=' \t,'): 
    words = re.split('[' + delimiters + ']', inputString.strip()) 
    return len(words), words 

Aber ich habe gerade bemerkt, dass es nicht benimmt gut mit mehreren internen Räumen (oder Tabs).

numWords, words = SplitStringIntoWords('A B') 
    print(str(numWords) + ' words') 
    print(*words, sep=' ') 

    numWords, words = SplitStringIntoWords('A B') 
    print(str(numWords) + ' words') 
    print(*words, sep=' ') 

    numWords, words = SplitStringIntoWords('A B') 
    print(str(numWords) + ' words') 
    print(*words, sep=' ') 

gibt

2 Wörter A   B

3 Wörter A     B

4 Wörter A       B

Was ist der beste Weg, mehrere Trennzeichen (Leerzeichen in diesem Fall), die innerhalb der Zeichenfolge sind, zu reduzieren?

Ich möchte es wirklich nur für die ersten X "Wörter" machen, da alles jenseits von Wort 5 frei formatierter Text ist, wo ich denke ich sollte nicht mehrere Leerzeichen zusammenbrechen. Aber das wäre "schön zu haben", nicht "muss haben".

+2

Fügen Sie ein '+' Zeichen ' '[' + Begrenzer + ']'' => ' '[' + Begrenzer + '] +'' – revo

+1

Sie verwenden könnten '[Trennzeichen] +' übereinstimmen 1 oder mehr zusammen mit ['maxsplit' für' re.split() '] (https://docs.python.org/3/library/re.html#re.split). – excaza

+1

Bitte aktivieren Sie die Rechtschreibprüfung Ihres Browsers. –

Antwort

5

Durch Hinzufügen einer + zu '[' + delimiters + ']', sollten Sie in der Lage sein zu bekommen, was Sie wollen.

def SplitStringIntoWords(inputString, delimiters=' \t,'): 
    words = re.split('[' + delimiters + ']+', inputString.strip()) 
    return len(words), words 
Verwandte Themen