仅当子字符串仅以大写字母开头时,才用点分隔字符串

时间:2019-06-28 07:36:29

标签: python

例如,如果我有:

狐狸正在运行。猫在喝酒。手机在Android 4.3上运行

然后拆分的是:

  1. 狐狸正在奔跑
  2. 猫在喝酒
  3. 手机在Android 4.3上运行

我尝试使用re.sub(r'[.\s+\W]+', '#', s),但是最终用#代替了任何空格。

使用s.split('. '),我只能解决一半的问题(点后的多个空格和以大写字母开头的空格除外)

1 个答案:

答案 0 :(得分:2)

只要您可以确保句子以大写字母开头,就可以对[A-Z]使用前瞻。您可能还希望同时使用空格进行拆分,可以通过在拆分中包含\s*?来实现:

import re
s = 'The fox is running. The cat is drinking. The phone runs on Android 4.3. How man days are left this month'

re.split(r'\.\s*?(?=[A-Z])', s)

结果:

['The fox is running',
 'The cat is drinking',
 'The phone runs on Android 4.3',
 'How man days are left this month']