Comment exclure l'en-tête et le pied de page lors de l'utilisation de open() pour importer un fichier texte, en JSL ?J'ai des données qui comportent plusieurs lignes d'en-tête au début des données et un pied de page à la fin des données.
Le texte de l'en-tête et du pied de page commence par un identifiant ! .
(le nombre de lignes d'en-tête, de pied de page et de données intermédiaires varie)
Exemple avec des données arbitraires (disponible sous forme de fichier .txt)
! en-tête première ligne
! en-tête deuxième ligne
Paramètre LSL USL Unités
tension 0,1 0,5 V
Capacité 0,3 0,7 pF
Résistance 0,5 9 Ohms
! Deuxième ligne du pied de page
! Troisième ligne du pied de page
! Troisième ligne du pied de page
Puis-je utiliser open() pour pouvoir exclure les données d'en-tête et de pied de page lors de l'importation de données au format texte ?
Je peux utiliser open() pour importer des données en conservant le texte d'en-tête et de pied de page (par exemple dans un tableau dt ).
Je veux aussi savoir comment extraire (vers une nouvelle table dt_nouveau ) les données excluant l'en-tête et le pied de page qui commencent par un identifiant, par exemple !.
Enfin, je souhaite enregistrer les données d'en-tête et de pied de page dans dt dans un tableau séparé, disons dt_hf. Comment faire cela ?
Merci.
Accès aux donnéesRe : Comment exclure l'en-tête et le pied de page lors de l'utilisation de open() pour importer un fichier texte, en JSL ?Voici un exemple simple de ce dont vous avez besoin, je pense.
Names Default To Here( 1 );
dt = Current Data Table();
headFootList = {};
col1Name = Column( 1 ) << get name;
Eval(
Parse(
Eval Insert(
"For Each Row( If( Contains( :^col1Name^, \!"!\!" ) == 1, Insert Into( headFootList, :^col1Name^ ) ) )"
)
)
);
Eval(
Parse(
Eval Insert(
"emptyCount = N Rows( dt << get rows where( :^col1Name^ == \!"\!" ) )"
)
)
);
Eval(
Parse(
Eval Insert(
"dt << select where( contains(:^col1Name^,\!"!\!")==1 | :^col1Name^ == \!"\!")"
)
)
);
Try( dt << delete rows );
dtHeadFoot = New Table( "Headers and Footers",
New Column( "Headers and Footers", character, set values( headFootList ) )
);
New Window( "Count of Empty Rows",
<<MODAL></MODAL>Re : Comment exclure l'en-tête et le pied de page lors de l'utilisation de open() pour importer un fichier texte, en JSL ?@txnelson . Voici à quoi cela ressemble. Je voudrais faire ce qui suit
1. Séparez le texte d'en-tête et de pied de page en une seule liste.
2. Séparez les données entre l'en-tête et le pied, à l'exception de la ligne vide, dans un tableau de données.
3. Comptez le nombre d'entrées vides dans la table de données (elles changent en fonction du fichier texte chargé)

Merci.
Re : Comment exclure l'en-tête et le pied de page lors de l'utilisation de open() pour importer un fichier texte, en JSL ?Est-ce à cela que ressemble votre tableau de données ?Dans la négative, pouvez-vous fournir un exemple de tableau de données ?

Re : Comment exclure l'en-tête et le pied de page lors de l'utilisation de open() pour importer un fichier texte, en JSL ?Merci @Craige_Hales .
Quelles modifications sont nécessaires si mes données se trouvent dans une table de données et non dans un fichier texte ?
(Je charge le fichier texte et je l'appelle, par exemple dt ).
Maintenant, je dois séparer l'en-tête et le pied de page de dt.
En outre, comment gérer les lignes vides entre les entrées d'en-tête et de pied de page, par exemple un espace vide entre pied de page deuxième ligne et troisième ligne du pied de page et ne pas les inclure dans données ?
Re : Comment exclure l'en-tête et le pied de page lors de l'utilisation de open() pour importer un fichier texte, en JSL ?Sens Unique:
filename = Save Text File(
"$temp/deleteme.txt",
"\[! header first line
! header second line
Parameter LSL USL Units
voltage 0.1 0.5 V
Capacitance 0.3 0.7 pF
Resistance 0.5 9 Ohms
! Footer second line
! Footer third line
! Footer third line]\"
);
lines = Words( Load Text File( filename ), "\!n\!r" );
metadata = {};
data = {};
For( i = 1, i <= N Items( lines ), i += 1,
line = lines[i];
If( Starts With( line, "!" ),
Insert Into( metadata, line ),
Insert Into( data, line )
);
);
datafilename = Save Text File( "$temp\data.txt", Concat Items( data, "\!n" ) );
metafilename = Save Text File( "$temp\metadata.txt", Concat Items( metadata, "\!n" ) );
dtData = Open( datafilename, Import Settings( End Of Field( Tab, Spaces, Space ) ) );
dtMetadata = Open( metafilename, Import Settings( Labels( 0 ) ) );
meta data separated from datameta data separated from datamétadonnées séparées des données