Mettre espace entre chiffres
HDç&
-
HDç& -
HDç& -
Bonjour,
Je dois mettre en forme un tableau de valeur en perl.
Le format d'entrée est le suivant :
< 0 0| 0 0 > 0.100E+01 0.100E+01 0.00
< 1 1| 0 0 > -0.852E-06 0.726E-12 -58.50
< 1 0| 1 0 > 0.100E+01 0.100E+01 0.00
< 0 1| 1 0 > -0.555E-07 0.308E-14 -10.16
< 1 0| 0 1 > 0.280E-06 0.782E-13 10.16
< 0 1| 0 1 > 0.100E+01 0.100E+01 0.00
< 0 0| 1 1 > 0.108E-05 0.116E-11 58.50
le résultat doit être :
<00|00> 0.100E+01 0.100E+01 0.00
<11|00> -0.852E-06 0.726E-12 -58.50
<10|10> 0.100E+01 0.100E+01 0.00
<01|10> -0.555E-07 0.308E-14 -10.16
<10|01> 0.280E-06 0.782E-13 10.16
<01|01> 0.100E+01 0.100E+01 0.00
<00|11> 0.108E-05 0.116E-11 58.50
En clair, je dois séparer ce tableaux en 4 colonnes avec comme délimiteur au moins un espace.
merci d'avance pour votre aide
<00|00> 0.100E+010.100E+010.00
Je dois mettre en forme un tableau de valeur en perl.
Le format d'entrée est le suivant :
< 0 0| 0 0 > 0.100E+01 0.100E+01 0.00
< 1 1| 0 0 > -0.852E-06 0.726E-12 -58.50
< 1 0| 1 0 > 0.100E+01 0.100E+01 0.00
< 0 1| 1 0 > -0.555E-07 0.308E-14 -10.16
< 1 0| 0 1 > 0.280E-06 0.782E-13 10.16
< 0 1| 0 1 > 0.100E+01 0.100E+01 0.00
< 0 0| 1 1 > 0.108E-05 0.116E-11 58.50
le résultat doit être :
<00|00> 0.100E+01 0.100E+01 0.00
<11|00> -0.852E-06 0.726E-12 -58.50
<10|10> 0.100E+01 0.100E+01 0.00
<01|10> -0.555E-07 0.308E-14 -10.16
<10|01> 0.280E-06 0.782E-13 10.16
<01|01> 0.100E+01 0.100E+01 0.00
<00|11> 0.108E-05 0.116E-11 58.50
En clair, je dois séparer ce tableaux en 4 colonnes avec comme délimiteur au moins un espace.
merci d'avance pour votre aide
<00|00> 0.100E+010.100E+010.00
A voir également:
- Mettre espace entre chiffres
- Espace insécable - Guide
- Espace de stockage gmail plein - Guide
- Espace stockage google - Guide
- Toutes les combinaisons possibles avec 3 chiffres ✓ - Forum Programmation
- Liberer espace ipad - Guide
2 réponses
Salut,
Il y a peut être mieux ;-) Vu que je suis au boulot je t'ai fait vite fait ça (je n'ai pas testé)
Il y a peut être mieux ;-) Vu que je suis au boulot je t'ai fait vite fait ça (je n'ai pas testé)
#!/usr/bin/perl
use strict; use warnings;
while(<DATA>){
s/<\s*([01])\s*([01])\|\s*([01])\s*([01])\s*>/<$1${2}|$3$4> /;
s/\s+/ /;
print;
}
__END__
< 0 0| 0 0 > 0.100E+01 0.100E+01 0.00
< 1 1| 0 0 > -0.852E-06 0.726E-12 -58.50
< 1 0| 1 0 > 0.100E+01 0.100E+01 0.00
< 0 1| 1 0 > -0.555E-07 0.308E-14 -10.16
< 1 0| 0 1 > 0.280E-06 0.782E-13 10.16
< 0 1| 0 1 > 0.100E+01 0.100E+01 0.00
< 0 0| 1 1 > 0.108E-05 0.116E-11 58.50
Re,
peut-être de longueur différente et comporter d'autres chiffres que 0 ou 1.
Au lieu de [01] mets \d+
Non, il ne reste pas des espaces entre < >.
En fait ce qui est après __END__ ce n'est pas un résultat, mais ce le texte lu par le handle DATA
peut-être de longueur différente et comporter d'autres chiffres que 0 ou 1.
Au lieu de [01] mets \d+
Non, il ne reste pas des espaces entre < >.
En fait ce qui est après __END__ ce n'est pas un résultat, mais ce le texte lu par le handle DATA
je vais essayer d'être plus précis.
Je vais préciser ce que j'entends par cas plus général.
Je peux avoir dans mes résultats : c représentant un chiffre < c | c>, < c c | c c >, <c ..........c |c.......c >,
<c | c .......c>. le nombre de chiffres de part et d'autre de | étant à priori inconnu.
Suis je plus clair?
merci
Je vais préciser ce que j'entends par cas plus général.
Je peux avoir dans mes résultats : c représentant un chiffre < c | c>, < c c | c c >, <c ..........c |c.......c >,
<c | c .......c>. le nombre de chiffres de part et d'autre de | étant à priori inconnu.
Suis je plus clair?
merci
Il y a toutefois un problème car la partie qui se trouve entre < et > peut-être de longueur différente et comporter d'autres chiffres que 0 ou 1.
De plus si j'ai bien compris ta réponse, il reste des espaces entre par exemple <0 0 | 0 0>.
merci beaucoup