有什么有效的方法可以使用空格填充标点符号吗?
输入:
s = 'bla. bla? bla.bla! bla...'
期望的输出:
s = 'bla . bla ? bla . bla ! bla . . .'
注释:
- 我不在乎标记之间有多少个空格。(但它们最终需要被折叠)
- 我不想填充所有的标点符号。假设我只关心 .,!?()。
你可以使用正则表达式来匹配你感兴趣的标点符号,并将它们用空格包围起来,然后使用第二步在文档中的任何位置折叠多个空格:
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 . . .
import string
text = text.translate(str.maketrans({key: " {0} ".format(key) for key in string.punctuation}))
s = re.sub('(?<! )(?=[.,!?()])|(?<=[.,!?()])(?! )', r' ', s)
(?<=[^ ])
和(?=[^ ])
来轻松完成。