Самый быстрый общий подход избегает RE в пользу быстрого, мощного .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. *, т. Е. Байтовым строкам - метод Unicode 'strings' .translate
несколько отличается - он принимает один аргумент, который должен быть отображением значений ord
для Символы Юникода в строки Юникода или None
для удаления. То есть, используя удобный метод dict
.fromkeys
:
nospace = dict.fromkeys(ord(c) for c in string.whitespace)
def unicode_remove_whitespace(value):
return value.translate(nospace)
чтобы удалить точно такой же набор символов. Конечно, в Юникоде также есть больше символов, которые вы можете рассматривать как пробел и которые хотите удалить - поэтому вы, вероятно, захотите построить отображение unicode_nospace
на основе информации из модуля unicodedata , а не использовать этот более простой подход на основе модуля строка .