Python:用空格填充标点符号(保留标点符号)

2022-04-15 00:00:00 python regex padding

问题描述

用空格填充标点符号的有效方法是什么?

输入:

s = 'bla. bla? bla.bla! bla...'

所需输出:

 s = 'bla . bla ? bla . bla ! bla . . .'

评论:

  1. 我不在乎令牌之间有多少空格。(但它们最终需要折叠)
  2. 我不想填充所有标点符号。假设我只对.,!?()感兴趣。

解决方案

您可以使用正则表达式匹配您感兴趣的标点符号字符,并用空格将它们括起来,然后使用第二步折叠文档中任意位置的多个空格:

s = 'bla. bla? bla.bla! bla...'
import re
s = re.sub('([.,!?()])', r' 1 ', s)
s = re.sub('s{2,}', ' ', s)
print(s)

结果:

bla . bla ? bla . bla ! bla . . .

相关文章