2017-05-07 78 views
0

我對python仍然有點新,所以我被困在一個問題上,我不知道如何解決這個特定的問題。如何從python中沒有空格的字符串中提取單詞?

所以我們有像「ThisThingIsCool」或「thisthingiscool」

現在我需要以某種方式作出這樣的列表[這東西,就是,酷]或[這個,事情是,酷]

字符串

目前,我正在使用textblob,但我不確定他們是否有這樣的方法來做這樣的事情。

我的意思是我下載了語料庫(我猜測它是一個單詞列表),但沒有看到任何功能來識別亂碼字符串中的單詞並提取單詞。留下一個列表作爲輸出。

所以我想解決至少能夠用大寫字母拆分。然而,我不知道如何去在python中。

所以,問題是

  1. 如何認識大寫字母?

  2. 如何分割而不用分隔符?

  3. 有沒有在textblob中已經做到這一點?

謝謝

+0

請參閱http://stackoverflow.com/a/41244596/4014959 –

回答

0

使用re模塊。

>>> a = 'ThisThingIsCool' 
>>> import re 
>>> re.findall(r'[A-Z][a-z]*', a) 
['This', 'Thing', 'Is', 'Cool'] 
>>> [i.lower() for i in re.findall(r'[A-Z][a-z]*', a)] 
['this', 'thing', 'is', 'cool'] 
>>> list(map(str.lower, re.findall(r'[A-Z][a-z]*', a))) 
['this', 'thing', 'is', 'cool'] 
+1

您的解決方案忽略單字母單詞和可能的非字母字符。 – DyZ

3

分裂用大寫字母與正則表達式相當容易:

s = "ThisThingIsCool" 
re.findall(r'[A-Z][^A-Z]*', s) 
#['This', 'Thing', 'Is', 'Cool'] 

一般的解決方法是非常困難,可能需要動態規劃。

+0

使用'^'而不是顯式指定每個正則表達式使解決方案更通用! –

相關問題