用空格填充标点符号的有效方法是什么?
输入:
s = 'bla. bla? bla.bla! bla...'
期望的输出:
s = 'bla . bla ? bla . bla ! bla . . .'
评论:
答案 0 :(得分:18)
您可以使用正则表达式来匹配您感兴趣的标点符号并用空格包围它们,然后使用第二步折叠文档中任意位置的多个空格:
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 . . .
答案 1 :(得分:2)
如果一个空格不存在,这将只添加一个空格,并且不会破坏现有空格或其他空白字符:
s = re.sub('(?<! )(?=[.,!?()])|(?<=[.,!?()])(?! )', r' ', s)
这可以通过在标点符号和非空格之间找到零宽度位置并在那里添加空格来实现。
请注意, 在字符串的开头或结尾添加空格,但可以通过将环视更改为(?<=[^ ])
和(?=[^ ])
来轻松完成。
请参阅操作: http://ideone.com/BRx7w
答案 2 :(得分:0)
如果使用python3,请使用maketrans()函数。
import string
text = text.translate(str.maketrans({key: " {0} ".format(key) for key in string.punctuation}))