IPB

Bienvenue invité ( Connexion | Inscription )

> Effacer des caractères compris entre deux zones
Options
EmatuM
posté 12 Jan 2021, 01:15
Message #1


Adepte de Macbidouille
*

Groupe : Membres
Messages : 90
Inscrit : 3 Jul 2020
Membre no 211 998



Bonjour smile.gif

Je suis en train de créer un script afin d'épurer un fichier CSV que je récupère de ma banque en ligne afin d'inclure son contenu dans un tableau Excle.
Le problème c'est que j'ai certaines transactions qui contiennent d'innombrables caractères qui ne servent à rien.
Pour imager cela, voilà un exemple (j'ai volontairement modifier certaines données mais la structure est la même) :

PRLV SEPA XXX : IT00000000000 00000000000000000000000000000000000 DE XXX : 00000000000000000000000000000000000 IT00000000000;;50,00;EUR;

Ce que je souhaiterais faire, c'est de supprimer l'ensemble des caractères qui sont en gras.
Je n'arrive pas à trouver la bonne commande qui permette de faire cela.
Si une âme charitable pouvait m'aiguiller. Merci rolleyes.gif


--------------------
Carte mère : Z390 Designare - Proc : i9900K - RAM : HyperX Predator 64Go 3600MHz - CG : Radeon VII
SSD : Samsung 970 EVO Plus M.2 (500 Go) - SSD : Samsung 970 EVO Plus M.2 (1 To) - HDD : SEAGATE IronWolf 6 To
Refroidissement : Alphacool Eisbaer LT240 - Alim : Corsair AX850
Boitier : Phanteks P600S Blanc - Ecran 1: ViewSonic VP2768-4K 27" - Ecran 2: Iiyama GB3461WQSU-B1 34"
Carte WiFi/BT: ABWB BCM94360CS2 - Clavier/Souris : Logitech G502 SE et Corsair K100
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
baron
posté 12 Jan 2021, 01:37
Message #2


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 19 411
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Le problème est toujours de déterminer quel est le pattern pertinent.
Ensuite, il ne doit pas être très difficile de créer une expression régulière qui le décrive (avec une recherche grep.)

Est-ce que toutes les parties que tu veux effacer, et seulement elles ! pourraient être décrites comme suit :
« Une chaîne de caractères quelconques, qui commence avec le premier deux-points rencontré dans un paragraphe et qui se termine devant le premier point-virgule ? »

Avec un seul exemple, c'est impossible à déterminer… mais sinon, inspire-toi de cet exemple pour décrire ce qui doit être recherché.


--------------------
MacBook Pro 14’’ 2021, M1 Pro, 16 Go/1 To – macOS  12.6 “Monterey”  MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 8 Go/SSD Samsung 860EVO 1 To – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
EmatuM
posté 12 Jan 2021, 12:33
Message #3


Adepte de Macbidouille
*

Groupe : Membres
Messages : 90
Inscrit : 3 Jul 2020
Membre no 211 998



Citation (baron @ 12 Jan 2021, 01:37) *
Le problème est toujours de déterminer quel est le pattern pertinent.


En effet on peut par exemple voir pour un pattern qui dirait "commence par les 2 points et supprime tous les caractères (quelconques) jusqu'au point virgule"
L'idée étant de supprimer également les 2 points du début, mais de ne pas supprimer le point virgule.

Citation (jeandemi)
Ce sont toujours les mêmes caractères (comme lorsque les caractères accentués sont remplacés) ou ils changent ?
Dans le premier cas, tu peux utiliser la fonction rechercher/remplacer

Alors c'est possible en effet car il me semble que les caractères sont toujours les mêmes. J'ai déjà exploité cette méthode avec le pattern suivant pour d'autres éléments qui se trouvaient à plusieurs endroits.

set text of front document to replace_eur(text of front document, "eur", "") of me
on replace_eur(le_texte, recherche, replace)
set AppleScript's text item delimiters to the recherche
set the item_list to every text item of le_texte
set AppleScript's text item delimiters to the replace
set le_texte to the item_list as string
set AppleScript's text item delimiters to ""
return le_texte
end replace_eur


Le problème c'est que là, ça fait un sacré paquet pour une seule chose à supprimer. Cette fonction ci-dessus est utile quand tu as plusieurs lignes dans un même fichier. Je ne trouve pas cela pertinent d'écrire un si gros paquet pour seulement une ligne de caractère qui n'apparait qu'une fois par mois dans mes relevés de compte.


--------------------
Carte mère : Z390 Designare - Proc : i9900K - RAM : HyperX Predator 64Go 3600MHz - CG : Radeon VII
SSD : Samsung 970 EVO Plus M.2 (500 Go) - SSD : Samsung 970 EVO Plus M.2 (1 To) - HDD : SEAGATE IronWolf 6 To
Refroidissement : Alphacool Eisbaer LT240 - Alim : Corsair AX850
Boitier : Phanteks P600S Blanc - Ecran 1: ViewSonic VP2768-4K 27" - Ecran 2: Iiyama GB3461WQSU-B1 34"
Carte WiFi/BT: ABWB BCM94360CS2 - Clavier/Souris : Logitech G502 SE et Corsair K100
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 2nd June 2024 - 03:39