J'ai du mal à supprimer la première partie de mes URL dans la colonne myId dans le fichier csv.

Mon.csv

myID

https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:b1234567-9ee6-11b7-b4a2-7b8c2344daa8d

Sortie souhaitée pour myID

b1234567-9ee6-11b7-b4a2-7b8c2344daa8d

Mon code:

df['myID'] = df['myID'].map(lambda x: x.lstrip('https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib:'))

Sortie dans myID (la première lettre 'b' est manquante devant la chaîne):

1234567-9ee6-11b7-b4a2-7b8c2344daa8d

Le code ci-dessus supprime https://mybrand.com/trigger:open?Myservice=Email&recipient=brn:zib: Cependant, il supprime également la première lettre de mon ID s'il y en a une devant l'ID, si c'est un nombre, il reste inchangé.

Quelqu'un pourrait-il aider avec ça? Merci!

3
Baobab1988 17 juin 2020 à 13:21

3 réponses

Meilleure réponse

Vous pouvez essayer un remplacement de regex ici:

df['myID'] = df['myID'].str.replace('^.*:', '', regex=True)

Cette approche consiste simplement à supprimer tout le contenu du début de MyID jusqu'aux deux points finaux inclusivement. Cela laisserait derrière l'UUID que vous souhaitez conserver.

1
Tim Biegeleisen 17 juin 2020 à 10:24

Avec lstrip, vous supprimez tous les caractères d'une chaîne qui correspondent à l'ensemble de caractères que vous passez en argument. Alors:

string = abcd
test = string.lstrip(ad)
print(test)

Si vous souhaitez supprimer les x premiers caractères de la chaîne, vous pouvez simplement la découper comme un tableau. Pour vous, ce serait quelque chose comme:

df['myID'] = df['myID'].map(lambda x: x[:-37])

Cependant, pour que cela fonctionne, la partie que vous souhaitez obtenir de la chaîne doit avoir une taille constante.

0
Pim 17 juin 2020 à 10:29

Vous pouvez utiliser re (si la partie avant ce que vous souhaitez extraire est toujours la même)

import re

idx = re.search(r':zib:', myID)
myNewID = myID[idx.end():]

Ensuite, vous aurez:

myNewID

'b1234567-9ee6-11b7-b4a2-7b8c2344daa8d'
0
YannTC 17 juin 2020 à 10:34