Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
- Accueil
- » Programmation
- » python fichier csv
- » Répondre
Répondre
Résumé de la discussion (messages les plus récents en premier)
- saske
- 30-01-2022 13:57:51
update l'exemple 2 marche
- saske
- 30-01-2022 13:55:24
re yoshi , vous utilisez quel IDE pour vos scripts? en essayant votre code pour recuperer le domain de l'email (l'exemple 1 et 2) j'obtient comme erreur
par rapport à la ligne 2
- saske
- 29-01-2022 15:23:27
Parfait ça résous mes principaux problèmes pour la suite merci yoshi !
- yoshi
- 28-01-2022 21:14:03
Re,
J'ai testé ta proposition :
>>> a.split('@')[1].split('.')[0]
truc-bidule
Là, ça ne marche pas, même si c'est très intéressant : j'ai appris quelque chose.
Sinon, je modifie ma première proposition pour quelle s'adapte aux cas extrêmes.
* Lire l'adresse à l'envers : donc le dernier point se trouve être le premier.
Exemple :
"brics@gmail.gouv.com"[::-1] donne rf.vuog.liamg@scirb
* Lire alors la position de ce point :
"brics@gmail.gouv.com"[::-1].find(".") et j'ajoute 1
* Je soustrais la valeur calculée à la longueur de l'adresse pour avoir l2.
* j'extrais le slice de l'adresse entre l1 et l2
Voilà :
Exemple1 :
>>> adresse ="brics@gmail.gouv.com"
>>> l1,l2=1+adresse.find("@"), 1+adresse.find("@"),len(adresse)-(1+adresse[::-1].find("."))
>>> print(adresse[l1:l2]
gmail.gouv
Exemple2 :
>>> l1,l2=1+adresse.find("@"),len(adresse)-(1+adresse[::-1].find("."))
>>> print(adresse[l1:l2])
truc-bidule.bip-machin
Un bémol : l'adresse bidon que j'utilise ici ne doit pas être "légale" : j'ai 2 points dans la partie qui suit le @...
Mais mes deux lignes (une de plus que toi) font le boulot quand même...
@+
- saske
- 28-01-2022 20:03:40
Bonjour
était la bonne formule (j'ai bricolé entre temps la fonction pour voir si j'y arrivais pas )
c'est noté :)
merci pour la concatenation je pense avoir compris
par contre pour le mail justement , l'algo ne marchera pas par exemple si l'hébergeur du mail est ".fr" par exemple , c'est pour ça que initialement j'avais pris le dernier point pour référence;
- yoshi
- 28-01-2022 19:26:35
Bonjour,
'ai un mail brics@gmail.gouv.com , comment je pourrai extraire de ce mail que les charactères compris entre le @ et le dernier point?
Appelons un chat un chat : brics@gmail.gouv.com n'est pas un mail, mais une adresse mail...
si tu veux pouvoir récupérer dans ton exemple : gmail.gouv
adresse="brics@gmail.gouv.com"
l1,l2=1+adresse.find("@"),len(adresse)-4
print(adresse[l1:l2]
Sortie :
gmail.gouv
Avec
adresse= "jules_louis@truc-bidule.bip-machin.org"
J'obtiens :
truc-bidule.bip-machin
As-tu testé ta proposition ?
Je pense que non.
En effet :
>>> a="saske@gmail.com"
>>> a.split('@')[1].split('.')[1]
'com'
Tu as un fichier .csv.
Il te faut l'ouvrir, puis le lire ligne par ligne : chaque ligne est une liste de string.
Mettons un fichier qui comprenne les colonnes :
Nom Prénom Adresse1 Adresse2 CP Ville
Supposons que tu veuilles concaténer les colonnes 4 et 5 de la ligne L suivante. :
L=["LADOUMEGUE","JULES","LES POMMIERS","2 RUE DU CHAT QUI MIAULE", "30330","FELINVILLE"]
Concaténer est donc très simple :
L=L.append(L[4]+" "+L[5])
Et la ligne L devient :
['LADOUMEGUE', 'JULES', 'LES POMMIERS', '2 RUE DU CHAT QUI MIAULE', '30330', 'FELINVILLE', '30330 FELINVILLE']
(L'espace pour la lisibilité dans mon exemple)
Si tu veux un fichier possédant une colonne de plus pour chaque ligne, il te faut ouvrir le fichier d'origine en lecture et récrire ligne après ligne, chaque ligne modifiée (ou non) dans un nouveau fichier .csv.
Si tu veux d'autres infos, n'hésite pas.
@+
- saske
- 28-01-2022 15:21:55
si j'avais juste comme mail a=saske@gmail.com , a.split('@')[1].split('.')[1] aurait suffit
- saske
- 28-01-2022 14:44:11
Bonjour ,
j'ai une petite question j'essaie d'automatiser un process mais j'ai des blocages par rapport à deux trucs
imaginons que j'ai un mail brics@gmail.gouv.com , comment je pourrai extraire de ce mail que les charactères compris entre le @ et le dernier point? je pense que c'est possible avec plusieurs boucles mais je pense aussi que en quelques ligne c'est faisable non?
et deuxième chose (pour ceux qui se connaissent en dataframe) comment concatener deux valeurs de deux colones differentes dans une autre colonne , pas des valeurs numérique







