2015-08-04 1 views
1

я следующий фрагмент кода:Как удалить определенное пространство с помощью регулярных выражений.

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

отлично работает на моей машине. Не удалось воспроизвести. – TigerhawkT3

+0

Также, почему вы не просто делаете 's = s.replace ('k', 'k')'? – TigerhawkT3

+0

работает на python 3, но не на моем python 2.7.7 (я должен обновить, знаю) – Dleep

ответ

1

при компиляции объекта регулярного выражения, вы, скорее всего, использовать его вместо «статического» повторно методов.

Таким образом, в вашем случае, вы будете использовать 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.

Else, просто замените ваш шаблон декларации в

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 
+0

Это работает так же хорошо, как и код OP для меня. Я не знаю, что происходит. – TigerhawkT3

Смежные вопросы