当我需要拆分数据行我得到以下结果:分割线数据与约束
>>> 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)' –