- O método `str.split(' ')` separa a cada 1 caractere em branco, i.e:
```python
>>> 'foo bar   picles          pedra'.split(' ')
['foo', 'bar', '', '', 'picles', '', '', '', '', '', '', '', '', '', 'pedra']
``` 
É isso mesmo que vc quer (re-gerar a string com a mesma característica da original em termos de espaços)?

- Instâncias de str e unicode possuem um método `capitalize`, que tem o comportamento que vc implementa em `capitalize_word`, mas imagino que seja implementado em C junto com o tipo. Inclusive o `str.capitalize` já abaixa a caixa dos caracteres de índice > 0.