2017-04-27 70 views
0

我想分割輸入字符串以在Python中進行分詞,但迄今爲止所做的所有嘗試都會導致Python「無所謂」投訴。在Python中使用RE分割輸入以進行分詞化使用RE

目前,我使用re.findall而不是re.split,但我不確定我的錯誤在哪裏與我的正則表達式。

我現在的正則表達式如下:

inputList = re.findall(R 「| [。!?,] | [\ w'] + [\ s]」 的TestString)

我想分割標點符號或空格。

我以前嘗試:

inputList = re.split(R '(\ s | \ W)*' 的TestString)

但是,這會給我不希望輸出字符串。

我也試過:

inputList = re.split(R '(\ S +)|(+)。!?]',的TestString)

但漸漸同樣的錯誤。

的TestString的例子:

的TestString = 「!美麗的約翰國王???我在這裏它的「回合的時間。」

期望輸出的一個例子: '!'?

[ '美麗', '', '王', '', '約翰', '', '',「? ','?','','我','','這裏','。','','這是','',''布特','','時間','。 ']

我得到正確的輸出與我的re.findall,但Python拋出的錯誤,我想擺脫它,如果可能的話。 有人能指出我用我的正則表達式所犯的錯誤嗎?

+1

一個的TestString的一個例子將是有益的,以回答你的問題 –

+0

當然。編輯包含一個示例testString。 – Stravask

回答

0

您例如這工作,但給空字符串太:

re.split(r'([ !?.])', testString) 

# ['Beautiful', ' ', 'King', ' ', 'John', '!', '', ' ', '', '?', '', '?', '', '?', '', ' ', "I'm", ' ', 'here', '.', '', ' ', "It's", ' ', "'bout", ' ', 'time', '.', ''] 

,但你想要的輸出,不只是一個過濾器運算遠:

inputList = [t for t in re.split(r'([ !?.])', t) if t] 

# ['Beautiful', ' ', 'King', ' ', 'John', '!', ' ', '?', '?', '?', ' ', "I'm", ' ', 'here', '.', ' ', "It's", ' ', "'bout", ' ', 'time', '.'] 
+0

謝謝,我感謝幫助! – Stravask