當我需要拆分數據行我得到以下結果:分割線數據與約束
>>> s="MS Dhoni cricket captain 10000"
>>> val=s.split()
>>> print val
['MS', 'Dhoni', 'cricket', 'captain', '10000']
但我希望在下面的方式代碼:
['MS Dhoni', 'cricket', 'captain', '10000']
雖然有是在特定位置的空間,它必須被跳過。我如何修改代碼?
當我需要拆分數據行我得到以下結果:分割線數據與約束
>>> s="MS Dhoni cricket captain 10000"
>>> val=s.split()
>>> print val
['MS', 'Dhoni', 'cricket', 'captain', '10000']
但我希望在下面的方式代碼:
['MS Dhoni', 'cricket', 'captain', '10000']
雖然有是在特定位置的空間,它必須被跳過。我如何修改代碼?
該代碼你想要做什麼
import re
s="MS Dhoni cricket captain 10000"
print(re.split("\s(?=[a-z0-9])",s))
輸出:
['MS Dhoni', 'cricket', 'captain', '10000']
說明:根據空間分割,但只有當後跟一個小寫字母或數字(不分割消耗操作感謝?=
施工(向前看)
但是這是作弊:曾有MS Dhoni
一直在字符串中間,它不會奏效。您認爲python知道如何讀取區分(先生,...)或只包含大寫字母的單詞以及下一個單詞。這只是你的想法。
它回答你的問題,但你必須更具體,如果你想答案對你的項目有用。
100%同意你的看法,因此我的評論最後(並且評論中的解決方案也可以正常工作,儘管我必須仔細閱讀它,才能明白它在做什麼:)) –
它最終可能會幫助你,但更通用的解決方案實質上是實體提取/識別。 –
你根本就不能使用'str.split()'。你可以用're.split()'取得一些成功,但我很懷疑。 * real *是什麼,完整的用例在這裏。 –
這不是一個錯誤。該方法完全按照預期和指定的方式工作。 –
're.split(r'(?<!MS)',s)' –