如何基于点拆分python中的字符串,忽略小数值?

时间:2016-09-01 09:08:27

标签: python regex

我有以下字符串:

  

s ='这个。是sparta 1.2版本。请检查。'

我想基于点分割它,而忽略小数字。 所以,必需的输出:

  

['这','是sparta 1.2版','请检查']

我试过以下:

    re.split(r'\.(?!([\d+\.\d+]))',s)

我得到的输出是:

  

['这',无,'是sparta 1.2版','','请检查',无,'']

为什么我在这里获得None和空字符串?我只想要分裂字符串,即

  

['这','是sparta 1.2版','请检查']

请在这里建议整改。

3 个答案:

答案 0 :(得分:4)

尝试拆分

(?<!\d)\.(?!\d)

确保点不在数字之前或之后。

See it here at regex101

答案 1 :(得分:0)

由于几乎拥有你想要的东西,你可以解析当前输出以删除Nones和空字符串。

这可以使用列表理解在一行中完成:

FilteredList = [ itm for itm in UnfilteredList if itm is not None and len(itm)>0]

答案 2 :(得分:0)

re.split(r'(?<=\D)\.(?=.)|(?<=\d)\.(?=\D)', item)

这会将字符串 item 用点分隔,并将忽略小数点。

在此链接中找到正则表达式的备忘单: https://www.dataquest.io/blog/regex-cheatsheet/