如何区分“...”到“。”用Python

时间:2017-09-11 12:50:07

标签: regex string python-2.7

我想重塑一个有特定迹象的句子。更确切地说,我想做以下事情:

sentence = "This is... a test."
reshaped_sentence = "This is ... a test ."

为此,我使用replace()函数:

sentence.replace("...", " ... ").replace(".", " . ")

但我获得了以下内容:

reshaped_sentence = "This is . . . a test ."

我真的需要区分......来。在我的句子中,所以任何想法如何纠正这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式匹配3个连续点或用0或更多空格字符括起来的单个点,并将其替换为用空格括起来的匹配值。要删除尾随或初始空格,只需调用strip()

请参阅Python demo

import re
rx = r"\s*(\.{3}|\.)\s*"
s = "This is... a test."
print(re.sub(rx, r" \1 ", s).strip())
# => This is ... a test .

此处\s*(\.{3}|\.)\s*匹配

  • \s* - 零个或多个空格
  • (\.{3}|\.) - 第1组(来自替换模式的\1):
    • \.{3} - 3点
    • | - 或
    • \. - 一个点
  • \s* - 零个或多个空格

请参阅regex demo