2017-02-13 10 views
0

我使用這個代碼,這是我從「淨某處回升,到一個文本行分成‘字’:重複的正則表達式定界符

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

不過,我只注意到它不表現以及多個內部空間(或標籤)。

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=' ') 

給出

2個詞語 甲 乙

3個詞語 甲   乙

4個字 甲     乙

摺疊字符串內部的多個分隔符(在這種情況下是空格)的最佳方式是什麼?

我真的只想爲第一個X「單詞」做這件事,因爲超越單詞5的所有內容都是自由格式的文本,我想我不應該摺疊多個空格。但那將是「很高興有」,而不是「必須擁有」。

+2

附加一個'+'標誌爲' '[' +定界符+ ']''=>' '[' +定界符+ '] +'' – revo

+1

你可以使用'[定界符] +',以匹配1或更多[''maxsplit' for're.split()'](https://docs.python.org/3/library/re.html#re.split)。 – excaza

+1

請打開瀏覽器的拼寫檢查功能。 –

回答

5

通過添加一個+'[' + delimiters + ']',你應該能夠得到你想要的。

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