Je me cache depuis quelques semaines, et j'ai décidé de me joindre pour être plus pratique avec mon apprentissage de Python. Ce que j'essaie de faire est de prendre une seule chaîne, contenant plusieurs adresses Web, et d'arriver à une liste contenant toutes les adresses avec un nom de domaine de 2-4 caractères. Les adresses hypothétiques ne sont pas tous les types simples.com, elles peuvent contenir plusieurs périodes. Voici une chaîne exemple que je souhaite convertir:fractionnement d'une chaîne-> liste à vérifier
urlstring = 'albatross.org,boogaloo.boolean.net,zenoparadox.hercules.gr,takeawalkon.the.wildside,fuzzy.logic.it,bronzeandiron.age,areyou.serious'
Pour obtenir les adresses dans une liste: list(urlstring.split(','))
. Mais je ne peux pas déterminer comment discerner la longueur du nom de domaine et le supprimer ou non en fonction de cette longueur. Est-il nécessaire de diviser chaque chaîne d'adresse en sous-chaînes par split('.')
? =/
Je suis assez sûr que c'est en quelque sorte répondu ailleurs, mais je ne pouvais pas vraiment trouver quelque chose de similaire. Je m'excuse pour la question super noobish, et promets que mes questions s'amélioreront en qualité pendant que j'apprends.
Editer: J'ai trouvé le problème avec votre réponse: len (url.split ('.') [X]), x devrait être -1, pas -2. – Sophia
Au lieu d'utiliser '.split' et en saisissant le dernier élément, vous pouvez utiliser un' .rsplit' limité de sorte que seulement deux éléments soient produits. Ainsi, '[url pour url in urlstring.split (',') si 2 <= len (url.rsplit ('.', 1) [1]) <= 4]'. Cela déclenchera une exception s'il n'y a pas de '.' dans un "url" du tout; le code original acceptera silencieusement 'com' et rejettera silencieusement 'bacon'. –
@Goethe: "foobar.com" .split ('.') [- 2] renvoie "foobar", ce que je pensais que l'OP voulait ... – jtdubs