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 ont 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
! Pied de page deuxième ligne
! Troisième ligne de pied de page
! Troisième ligne de pied de page
Puis-je utiliser open () pour exclure les données d'en-tête et de pied de page lors de l'importation de données au format texte ?
Je suis capable d'utiliser open() pour importer des données en conservant le texte de l'en-tête et du pied de page (par exemple dans un tableau dt ).
Je veux aussi savoir comment extraire (vers une nouvelle table dt_nouveau ) les données à l'exclusion de l'en-tête et du pied de page qui commencent par un identifiant, disons !.
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.
Tableau de donnéesScriptRe : Comment exclure l'en-tête et le pied de page lors de l'utilisation de open () pour importer un fichier texte, en JSL ?Une manière:
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 ) ) );
méta-données séparées des 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 l'appelle dire dt ).
Maintenant, je dois séparer l'en-tête et le pied de page de dt.
Aussi, comment gérer les lignes vides entre les entrées d'en-tête et de pied de page, par exemple l'espace vide entre pied de page deuxième ligne et pied de page troisième ligne et ne pas les inclure dans Les 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 ?Est-ce à quoi ressemble votre tableau de données ?Sinon, 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 ?@txnelson . Voici à quoi cela ressemble. je voudrais faire ce qui suit
1. Séparez le texte de l'en-tête et du 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 ?Voici un exemple simple de ce dont je pense que vous avez besoin.
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>