Необходимо использовать "кавычки" вокруг свойств, которые содержат что-либо кроме словесных символов
{foo-bar: 3} // invalid
{"foo-bar": 3} // valid
, Кроме которого нет никакого различия между двумя, и я вообразил бы оба пути работой через все браузеры
>>> import re
>>> re.sub(' +', ' ', 'The quick brown fox')
'The quick brown fox'
foo is your string:
" ".join(foo.split())
Be warned though this removes "all whitespace characters (space, tab, newline, return, formfeed)". (Thanks to hhsaffar, see comments) ie "this is \t a test\n"
will effectively end up as "this is a test"
Similar to the previous solutions, but more specific: replace two or more spaces with one:
>>> import re
>>> s = "The fox jumped over the log."
>>> re.sub('\s{2,}', ' ', s)
'The fox jumped over the log.'
import re
s = "The fox jumped over the log."
re.sub("\s\s+" , " ", s)
или
re.sub("\s\s+", " ", s)
, поскольку пробел перед запятой указан как любимая мозоль в PEP8, как упомянул лось в комментариях.
Придется согласиться с приведенным выше комментарием Пола Макгуайра. Для меня
' '.join(the_string.split())
намного предпочтительнее, чем извлечение регулярного выражения.
Мои измерения (Linux, Python 2.5) показывают, что разделение-затем-соединение выполняется почти в 5 раз быстрее, чем выполнение «re.sub (...)», и все же в 3 раза быстрее, если предварительно скомпилировать регулярное выражение один раз и проделайте операцию несколько раз. И это во всяком случае легче понять - намного более питоническое.