def remove_whitespaces(value):
"Remove all whitespaces"
p = re.compile(r'\s+')
return p.sub(' ', value)
Вышеупомянутый код разбивает теги, но не удаляет "все" пробелы из значения.
Спасибо
Самый быстрый общий подход избегает REs в пользу строкового быстрого, мощного метода .translate
:
import string
identity = string.maketrans('', '')
def remove_whitespace(value):
return value.translate(identity, string.whitespace)
В версии 2.6 это еще проще, просто
return value.translate(None, string.whitespace)
Обратите внимание, что это относится к "простым" строкам Python 2. *, т.е. bytestrings - метод Unicode string .translate
несколько отличается - он принимает один аргумент, который должен быть отображением значений ord
для Unicode символы в строки Unicode, или None
для удаления. I.e., используя dict
удобный .fromkeys
classmethod:
nospace = dict.fromkeys(ord(c) for c in string.whitespace)
def unicode_remove_whitespace(value):
return value.translate(nospace)
удалить точно такой же набор символов. Конечно, в Unicode также есть больше символов, которые вы могли бы рассмотреть в виде пробелов и хотите удалить - так что вы, вероятно, захотите построить сопоставление unicode_nospace
на основе информации из модуля unicodedata, вместо использования этого более простого подхода, основанного на модуле string.
p.sub(' ', value)
должен быть
p.sub('', value)
Первый заменяет все пробелы одним пространством, последнее ничего не заменяет.
re.sub('\s*', '', value)
также должен работать!
Может быть, value.join(p.split()) '..join(value.split()) может работать для вас?
''.join(value.split())
@OP, скомпилируйте шаблон регулярного выражения снаружи, поэтому вам не нужно вызывать re.compile каждый раз, когда вы используете процедуру. Вы также заменяете одно пространство, которое не удаляет пробелы?
p = re.compile(r'\s+')
def remove_whitespaces(p,value):
"Remove all whitespaces"
return p.sub('', value)
Наконец, другой метод, не использующий регулярное выражение, состоит в том, чтобы просто разбить на пробелы и снова объединить их
def remove_whitespaces(value):
"Remove all whitespaces"
return ''.join(value.split())
re.sub(r'\s', '', value)
функция работает для меня в этом случае.