Suite

Extraire la sous-chaîne après le premier nombre

Extraire la sous-chaîne après le premier nombre


Supposons que j'ai un champ intitulé NOM1.

Des exemples de ce qui est dans le champ apparaissent comme ceci :

Lac Renard 1
WABASCA 166
TSU MAR 196G
PIQUANT JAUNE I.R. 90-8
RÉSERVE INDIENNE POUNDMAKER NO. 114-17
LAC TRAVERSÉ 19X02
BEARDY'S & OKEMASIS I.R. 96 et 97A

Comment en utilisant un script python ou vb extraire une chaîne uniquement après le premier chiffre dans un nouveau champ intitulé Nom_Num?

Fondamentalement, le champ Name_Num devrait apparaître comme ceci :

1
166
196G
90-8
114-17
19X02
96 & 97A

Attention, j'ai besoin de la lettre jointe aux chiffres. Je ne peux pas simplement extraire des chiffres. Mais tout ce qui précède le premier numéro doit disparaître. Les nombres varient en longueur de caractère mais apparaissent toujours à la fin de ma chaîne.

J'utilise rarement python et je ne sais pas quand quelque chose entre ou non dans le bloc de pré-code.

Ce sont les résultats après avoir entré la première réponse qui avait l'air bien à mon avis mais qui n'a malheureusement pas fonctionné.


En supposant que vous recherchiez des nombres positifs, car il semble que vous extrayiez des éléments d'adresse.

Exécutez un calcul de champ sur le champ Name_Num.

Mettez ceci dans le code de script pré-logique (assurez-vous que l'analyseur est Python) :

def extract_from_number_to_end(input_string): output = input_string # renvoie l'entrée si aucun nombre n'a été trouvé pour char dans input_string: if char.isdigit(): pos = input_string.find(char) output = input_string[pos:] break #stop comme nous l'avons trouvé la première sortie de retour de nombre

Et appelez-le dans la partie Name_Num = comme :

extract_from_number_to_end(!MyField!)

Il renvoie par défaut la chaîne d'origine si aucun nombre n'est trouvé.