2016-08-10 2 views
0

Вход:строка очистки в питона

" The Elephant's 4 cats. " 

Ожидаемый результат:

the elephants 4 cats 

Код:

import re 

temp1 = re.sub('\W+',' ', str).strip() 
output = temp2.lower() 

Мой выход:

the elephant s 4 cats 

У меня все еще есть дополнительное пространство между слоном и 's'. Еще одна проблема заключается в том, что я не могу удалить «_» (подчеркивание). Где я ошибаюсь, любые предложения были бы полезными.

+1

'\ W' - это все, что не является' \ w'. '\ w' эквивалентно' [A-Za-z0-9_] ', то есть заметить, что он явно содержит подчеркивание, поэтому' \ W' исключает символ подчеркивания. Кроме того, вы заменяете пробел: '' '', поэтому я не уверен, почему вы ожидаете, что между слоном и словом не будет пробела –

+0

@ juanpa.arrivillaga yea ur, который был найден ошибкой. Получил это сейчас. –

ответ

3

попробовать:

temp1 = re.sub(r'[^\w\s_]+', '', str).strip() 

В основном, оригинал \ W + означает "символы без слов", что соответствует пробелы, кавычки и точки. Таким образом, все они заменяются «пространством» ... что означает, что апостроф получает пространство.

С помощью специальных символов, отличных от слов, не содержащих пробелов, вы, вероятно, получите лучшую замену.

+1

спасибо, что это сработало. –