2016-08-20 44 views
-1

當我需要拆分數據行我得到以下結果:分割線數據與約束

>>> s="MS Dhoni cricket captain 10000" 
>>> val=s.split() 
>>> print val 
['MS', 'Dhoni', 'cricket', 'captain', '10000'] 

但我希望在下面的方式代碼:

['MS Dhoni', 'cricket', 'captain', '10000'] 

雖然有是在特定位置的空間,它必須被跳過。我如何修改代碼?

+0

你根本就不能使用'str.split()'。你可以用're.split()'取得一些成功,但我很懷疑。 * real *是什麼,完整的用例在這裏。 –

+2

這不是一個錯誤。該方法完全按照預期和指定的方式工作。 –

+0

're.split(r'(?<!MS)',s)' –

回答

2

該代碼你想要做什麼

import re 

s="MS Dhoni cricket captain 10000" 

print(re.split("\s(?=[a-z0-9])",s)) 

輸出:

['MS Dhoni', 'cricket', 'captain', '10000'] 

說明:根據空間分割,但只有當後跟一個小寫字母或數字(不分割消耗操作感謝?=施工(向前看)

但是這是作弊:曾有MS Dhoni一直在字符串中間,它不會奏效。您認爲python知道如何讀取區分(先生,...)或只包含大寫字母的單詞以及下一個單詞。這只是你的想法。

它回答你的問題,但你必須更具體,如果你想答案對你的項目有用。

+0

100%同意你的看法,因此我的評論最後(並且評論中的解決方案也可以正常工作,儘管我必須仔細閱讀它,才能明白它在做什麼:)) –

+0

它最終可能會幫助你,但更通用的解決方案實質上是實體提取/識別。 –