Supprimer ": :" dans un document.txt

Jillow -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai un ficher in_4799 , et je voudrais faire un script en C pour supprimer automatiquement quand il y a "::" qui suit un + quand la ligne commence par PCI.

Voici a quoi ressemble le ficher in_4799 :

PCI+24+AS PER INVOICE::CONTAINER NO.?::GLDU9388840::AGENT SEAL NO.?::IN0344370::CUSTOM SEAL NO.:?:2222486'
PCI+24+::CONTAINER NO.?:2::FCIU4781107 /:20 FT:::AGENT SEAL NO.?::IN0423237'
PCI+24+:CUSTOM SEAL NO.:?:2222485'
CST+1+T:120+T2:105++732599:169'
GID+6+1:PK'
FTX+AAA+++ALUMINIUM PNEUMATIC MECHANICAL PART'
MEA+AAE+G+KGM:226'
MEA+AAE+AAW+MTQ:37.351'
SGP+GLDU9388840+1'
PCI+24+AS PER INVOICE::CONTAINER NO.?::GLDU9388840::AGENT SEAL NO.?::IN0344370::CUSTOM SEAL NO.:?:2222486'
PCI+24+::CONTAINER NO.?:2::FCIU4781107 /:20 FT:::AGENT SEAL NO.?::IN0423237'
PCI+24+:CUSTOM SEAL NO.:?:2222485'
CST+1+T:120+T2:105++841290:169'
GID+7+5:PK'
FTX+AAA+++DUCTILE IRON CAST ARTICLES'
MEA+AAE+G+KGM:2346.6'
MEA+AAE+AAW+MTQ:37.351'
SGP+GLDU9388840+5'
PCI+24+AS PER INVOICE::CONTAINER NO.?::GLDU9388840::AGENT SEAL NO.?::IN0344370::CUSTOM SEAL NO.:?:2222486'
PCI+24+::CONTAINER NO.?:2::FCIU4781107 /:20 FT:::AGENT SEAL NO.?::IN0423237'
PCI+24+:CUSTOM SEAL NO.:?:2222485'

Après le script le fichier devrait ressembler a ça :

PCI+24+AS PER INVOICE::CONTAINER NO.?::GLDU9388840::AGENT SEAL NO.?::IN0344370::CUSTOM SEAL NO.:?:2222486'
PCI+24+CONTAINER NO.?:2::FCIU4781107 /:20 FT:::AGENT SEAL NO.?::IN0423237'
PCI+24+:CUSTOM SEAL NO.:?:2222485'
CST+1+T:120+T2:105++732599:169'
GID+6+1:PK'
FTX+AAA+++ALUMINIUM PNEUMATIC MECHANICAL PART'
MEA+AAE+G+KGM:226'
MEA+AAE+AAW+MTQ:37.351'
SGP+GLDU9388840+1'
PCI+24+AS PER INVOICE::CONTAINER NO.?::GLDU9388840::AGENT SEAL NO.?::IN0344370::CUSTOM SEAL NO.:?:2222486'
PCI+24+CONTAINER NO.?:2::FCIU4781107 /:20 FT:::AGENT SEAL NO.?::IN0423237'
PCI+24+:CUSTOM SEAL NO.:?:2222485'
CST+1+T:120+T2:105++841290:169'
GID+7+5:PK'
FTX+AAA+++DUCTILE IRON CAST ARTICLES'
MEA+AAE+G+KGM:2346.6'
MEA+AAE+AAW+MTQ:37.351'
SGP+GLDU9388840+5'
PCI+24+AS PER INVOICE::CONTAINER NO.?::GLDU9388840::AGENT SEAL NO.?::IN0344370::CUSTOM SEAL NO.:?:2222486'
PCI+24+CONTAINER NO.?:2::FCIU4781107 /:20 FT:::AGENT SEAL NO.?::IN0423237'
PCI+24+:CUSTOM SEAL NO.:?:2222485'

merci d'avance.
A voir également:

2 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
En Python3, cela donnerait :

import re
  
f = open('in_4799')
for line in f:
    m = re.match(r"(^PCI.*?\+)::(.*$)", line)
    if m:
        print(m.group(1)+m.group(2))
    else:
        print(line, end='')
f.close()

Si
+::
peut apparaître plusieurs fois sur une ligne commençant par PCI, il faut modifier le code pour appliquer la regexp sur la ligne lue tant que la regexp est matchée (ce n'est pas le cas dans le jeu de données que tu fournis).

En C il faudrait une bonne centaine de lignes, sauf si tu utilises une bibliothèque gérant les regexp.

Dal
2
Jillow Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
OK merci pour ton aide.
0
Jillow Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 


Juste un dernier service, tu sais comment m'aider parce que je comprend pas pourquoi il trouve pas le fichier.

-Jillow
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105 > Jillow Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Parce qu'aucun fichier "in4799" ne se trouve à cet emplacement ?

Dans ton message d'origine tu indiquais que le fichier était "in_4799" et pas "in4799" comme tu l'as écrit.

Vérifie aussi s'il n'y a pas d'extension . Tu es visiblement sous Windows, et ce système d'exploitation aime bien "simplifier la vie" des utilisateurs en masquant les extensions "connues" dans le gestionnaire de fichiers. Si ton fichier a une extension .txt et que tu ne pas précises pas dans ton programme, Python ne le trouvera pas.
0
Jillow Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   > [Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention  
 
D'accord je vais essayer mettre l'extension et le "_" c'est juste que je l'ai oublier ????
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105 > Jillow Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
c'est toi qui vois (tu peux voir ce que tu as), je me contente d'essayer de deviner et je ne peux pas voir à ta place :-)
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Bonjour Jillow,

Il est possible de le faire en C, mais utiliser un langage de script comme Perl permettrait de le faire en moins de 5 lignes de code (ou en Python en un peu plus).

Pourquoi veux-tu le faire en C ?

Dal
1
Jillow Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Parce que j'ai quelques bases en C mets le python me conviendrait parfaitement.
0