我想基于python中的分隔符将文本分成句子。但是,我不想根据数字之间的小数点或数字之间的逗号分割它们。我们如何忽略它们。
例如,我有一个如下文字。
I am xyz.I have 44.44$. I would like, to give 44,44 cents to my friend.
句子必须是
I am xyz
I have 44.44$
I would like
to give 44,44 cents to my friend
请你帮我正则表达式。如果以前已经提出这个问题,我很抱歉。我找不到。
谢谢
答案 0 :(得分:4)
这适用于您的示例,但如果重要的话,最后一部分会有一个尾随句号(句点)。
import re
s = 'I am xyz. I have 44.44$. I would like, to give 44,44 cents to my friend.'
for part in re.split('[.,]\s+', s):
print(part)
<强>输出强>
I am xyz
I have 44.44$
I would like
to give 44,44 cents to my friend.
Wiktor的表达式\s*[.,](?!\d)\s
适用于您的新示例:
I am xyz.I have 44.44$. I would like, to give 44,44 cents to my friend.
打破这个局面:
\s*
将匹配0到许多空白字符。[.,]
将匹配,
或.
字符。(?!\d)
将导致匹配被丢弃。这是避免在数字内分裂的必要条件。\s
将匹配单个空格字符。请注意,对于像“我22。10年前我12岁”这样的句子,它仍然会失败,尽管我认为没有办法单独使用正则表达式解决这个问题。