Come escludere intestazione e piè di pagina quando si utilizza open() per importare un file di testo, in JSL?Ho dati che hanno diverse righe di intestazione all'inizio dei dati e piè di pagina alla fine dei dati.
Sia il testo dell'intestazione che quello del piè di pagina iniziano con un identificatore ! .
(il numero di righe di intestazione, piè di pagina e dati intermedi varia)
Esempio con dati arbitrari (disponibile come file .txt)
! intestazione prima riga
! intestazione seconda riga
Parametro LSL Unità USL
tensione 0,1 0,5 V
Capacità 0,3 0,7 pF
Resistenza 0,5 9 Ohm
! Piè di pagina seconda riga
! Piè di pagina terza riga
! Piè di pagina terza riga
Posso utilizzare open() in modo da escludere i dati di intestazione e piè di pagina durante l'importazione di dati in formato testo?
Sono in grado di utilizzare open() per importare i dati mantenendo il testo dell'intestazione e del piè di pagina (diciamo in una tabella dt ).
Voglio anche sapere come estrarre (in una nuova tabella dt_new ) dati esclusi l'intestazione e il piè di pagina che iniziano con un identificatore, ad esempio !.
Infine, voglio salvare i dati di intestazione e piè di pagina in dt in una tabella separata, diciamo dt_hf. Come fare questo?
Grazie.
Tabella datiScriptingRi: Come escludere intestazione e piè di pagina quando si utilizza open() per importare un file di testo, in JSL?Senso unico:
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 ) ) );
metadati separati dai dati
Ri: Come escludere intestazione e piè di pagina quando si utilizza open() per importare un file di testo, in JSL?Grazie @Craige_Hales .
Quali modifiche sono necessarie se i miei dati si trovano in una tabella dati e non in un file di testo?
(carico il file di testo e lo chiamo say dt ).
Ora devo separare l'intestazione e il piè di pagina da dt.
Inoltre, come gestire le righe vuote tra le voci di intestazione e piè di pagina, ad esempio lo spazio vuoto tra piè di pagina seconda riga e piè di pagina terza riga e non includerli in dati ?
Ri: Come escludere intestazione e piè di pagina quando si utilizza open() per importare un file di testo, in JSL?È così che appare la tua tabella dati?In caso contrario, puoi fornire una tabella di dati di esempio?

Ri: Come escludere intestazione e piè di pagina quando si utilizza open() per importare un file di testo, in JSL?@txnelson . Di seguito è come appare. Vorrei fare quanto segue
1. Separare il testo dell'intestazione e del piè di pagina in un unico elenco.
2. Separare i dati tra l'intestazione e il piede tranne la riga vuota in una tabella di dati.
3. Contare il numero di voci vuote nella tabella dati (cambiano a seconda del file di testo caricato)

Grazie.
Ri: Come escludere intestazione e piè di pagina quando si utilizza open() per importare un file di testo, in JSL?Ecco un semplice esempio di ciò che penso ti serva.
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>