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

Python 如何使用正则表达式删除特定空间。,python,regex,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’有一个“敏捷的棕色狐狸跳过了懒惰的狗”的最终结果。但是,最终的字符串结果保持不变 我应该更改什么?编译regex对象时,最有可能使用它而不是“静态”re方法 因此,在您的情况下,您将使用已编译的regex对象: s =

我有以下代码:

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’有一个“敏捷的棕色狐狸跳过了懒惰的狗”的最终结果。但是,最终的字符串结果保持不变


我应该更改什么?

编译regex对象时,最有可能使用它而不是“静态”re方法

因此,在您的情况下,您将使用已编译的regex对象:

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

输出:
敏捷的棕色狐狸跳过懒惰的狗。

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

pattern = r'\sk\s'
注意这里的括号是多余的,您没有使用捕获的组文本

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

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


在我的机器上工作得很好。无法复制。此外,您不只是执行
s=s.replace('k','k')
?在python 3上工作,但在我的python 2.7.7(我知道应该更新)上工作得很好,在我的2.7.9机器上(上面是3.4.2)。无法复制。2.7.7和2.7.9之间有那么多不兼容吗?为什么要编译模式而不仅仅是
pattern.sub('k',s)
?对我来说,这和OP的代码一样有效。我不知道发生了什么。
#!/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