2016-08-20 43 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

它最终可能会帮助你,但更通用的解决方案实质上是实体提取/识别。 –