如何使用正则表达式删除特定空间。

时间:2015-08-04 20:36:28

标签: python regex

我有以下代码:

import re

s = 'The quic k brown fox jumps over the lazy dog.'
pattern = re.compile(r'(\sk\s)')
s = re.sub(pattern, 'k ', s)

我希望's'得到最终结果“快速的棕色狐狸跳过懒狗。但是,最终的字符串结果保持不变。

我应该改变什么?

1 个答案:

答案 0 :(得分:1)

编译正则表达式对象时,最有可能使用它而不是"静态" re 方法。

因此,在您的情况下,您将使用已编译的正则表达式对象的sub

s = 'The quic k brown fox jumps over the lazy dog.'
pattern = re.compile(r'\sk\s')
s = pattern.sub('k ', s)
print s

请参阅demo

输出:The quick brown fox jumps over the lazy dog.

否则,只需将模式声明替换为

即可
pattern = r'\sk\s'

请注意,括号在这里是多余的,您没有使用捕获的组文本。

此外,如果输入字符串中有任何硬空格,您可能希望先用普通空格替换它们

s = s.replace(u'\xa0', u' ')

Another sample code

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re

s = u'The quic k brown fox jumps over the lazy dog.'
s = s.replace(u'\xa0', u' ')
pattern = re.compile(ur'\sk\s')
s = pattern.sub(u'k ', s)
print s