2010-11-04 8 views
1

À titre d'exercice, décrire la relationen python, chapitre 8 (listes)

entre string.join (string.split (chanson)) et chanson.

(ils se réfèrent tous deux à une chaîne)

Sont-ils les mêmes pour toutes les chaînes? Quand seraient-ils différents?

Je suis un peu honte de poser une telle question à une question simple mais probablement,

Je ne comprends pas, ce qui est/sont l'exception (s)? quand sont-ils différents?

+2

Étape 1. Écrivez du code pour essayer les choses. Étape 2. Mettez à jour la question avec le code que vous avez essayé. Il est plus facile de commenter le code réel. Veuillez mettre à jour la question avec un code réel qui tente de répondre à la question. –

+1

Les fonctions du module de chaînes sont d'ailleurs déconseillées. Quelle édition de Thinking in Python est-ce? –

+0

L'expérience est le meilleur professeur. Tout d'abord, lisez la documentation [http://docs.python.org/py3k/library/stdtypes.html#str.split] pour comprendre ce que font les fonctions. Ensuite, essayez-le avec une variété de chaînes. De là, vous pouvez déduire une règle empirique et répondre à votre propre question! –

Répondre

3

Par défaut the split method groupes délimiteurs consécutifs ensemble, donc si vous les avez dans votre chaîne d'origine, ils seront perdus:

>>> import string 
>>> song = "I  am  the  Walrus" 
>>> string.join(string.split(song)) 
'I am the Walrus' 

Cependant, si vous spécifiez délimiteurs de partager sur puis délimiteurs consécutifs ne sont pas groupés de façon vous pouvez garder les cordes même:

>>> string.join(string.split(song,' ')) 
'I am the Walrus' 
1

split se divise en fait sur une ou plusieurs occurrences du délimiteur. Ainsi, " a b c ".split() et "aBc" .split() ont tous deux la même valeur list, c'est-à-dire ['a','b','c']. join ajoute uniquement une seule instance du délimiteur entre les éléments consécutifs du list. "" .join (['a', 'b', 'c']) gives us "a b c" `, qui correspond à la deuxième chaîne mais pas à la première chaîne.

>>> original="  a  b   c " 
>>> " ".join(original.split()) 
'a b c' 

BTW, en utilisant string.split et string.join est dépréciée. Appelez-les simplement comme des méthodes de la chaîne sur laquelle vous travaillez (comme dans mes exemples).

+0

sans arguments, il se divise également sur les nouvelles lignes et les onglets. –

+0

@Marco Mariani: oui, sans arguments, il se sépare juste sur tous les espaces. – MAK

+0

merci à tous pour vos réponses – Alpagut