web-dev-qa-db-fra.com

Python, diviser des éléments Tuple en éléments uniques

J'ai Tuple en Python qui ressemble à ceci:

Tuple = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')

et je veux le séparer afin que je puisse obtenir chaque article de Tuple indépendant afin de pouvoir faire quelque chose comme ceci:

domain = "sparkbrowser.com"
level = 0
url = "http://facebook.com/sparkbrowser"
text = "Facebook"

ou quelque chose de similaire à cela, mon besoin est d'avoir chaque article séparé. J'ai essayé avec .split(",") sur Tuple mais j'ai une erreur qui dit que Tuple n'a pas l'option split

Toute aide ou conseil est le bienvenu

12
dzordz

Python peut décompresser des séquences naturellement.

domain, level, url, text = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')
30

Mieux vaut ne pas utiliser Tuple comme nom de variable.

Vous pouvez utiliser split(',') si vous aviez une chaîne comme 'sparkbrowser.com,0,http://facebook.com/sparkbrowser,Facebook', que vous deviez convertir en liste. Cependant, vous avez déjà un tuple, il n’est donc pas nécessaire de le faire ici.

Si vous savez que vous avez exactement le bon nombre de composants, vous pouvez le décompresser directement.

the_Tuple = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')
domain, level, url, text = the_Tuple

Python3 a une syntaxe de décompression puissante. Pour obtenir uniquement la domain et la text, vous pouvez utiliser

domain, *rest, text = the_Tuple

rest contiendra [0, 'http://facebook.com/sparkbrowser']

5
John La Rooy
>>> domain, level, url, text = ('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')
>>> domain
'sparkbrowser.com'
>>> level
0
>>> url
'http://facebook.com/sparkbrowser'
>>> text
'Facebook'
2
sachitad

Une alternative pour cela consiste à utiliser collections.namedtuple . Cela facilite l'accès aux éléments des n-uplets.

Démo:

>>> from collections import namedtuple
>>> Website = namedtuple('Website', 'domain level url text')
>>> site1 = Website('sparkbrowser.com', 0, 'http://facebook.com/sparkbrowser', 'Facebook')
>>> site2 = Website('foo.com', 4, 'http://bar.com/sparkbrowser', 'Bar')
>>> site1
Website(domain='sparkbrowser.com', level=0, url='http://facebook.com/sparkbrowser', text='Facebook')
>>> site2
Website(domain='foo.com', level=4, url='http://bar.com/sparkbrowser', text='Bar')
>>> site1.domain
'sparkbrowser.com'
>>> site1.url
'http://facebook.com/sparkbrowser'
>>> site2.level
4
0
Keyur Potdar