Utilisez JSL pour extraire des données de type tableau mal alignées à partir d'un fichier txtSalut,
J'ai beaucoup de difficulté à extraire les données dont j'ai besoin d'un fichier texte. Les données sont un fichier .txt de format ci-dessous (fichier joint), et est répété dans un fichier volumineux (100 Mo):
Température 0x100
PARTIE ID 0x5A6A111F
5626 0 PASS DC_VoLevels.4 GPIO_32 312 1.0000 V 3.1638 V 3.3000 V -4.0000 mA 0
Tri du site Poubelle
------------------------------------
0 123 4
J'ai besoin de créer une table de données avec 2 colonnes et en-têtes ID de la pièce, bin et données énumérées ci-dessous:
PART ID Bin
0x5A6A111F 4
Je peux extraire l'ID de la pièce, mais le problème avec le bac et le numéro ci-dessous est le suivant. Toute aide serait très appréciée.
Jen
Re: Utilisez JSL pour extraire des données de type tableau mal alignées à partir d'un fichier txtMerci, ça a l'air génial, je vais essayer.Re: Utilisez JSL pour extraire des données de type tableau mal alignées à partir d'un fichier txtImporter des données comme celle-ci est délicat, mais vous pouvez le faire en lisant le fichier ligne par ligne et en recherchant des mots-clés pour déterminer comment utiliser les données. Voir l'exemple ci-dessous pour plus de détails.
// load the file to be imported as a string
str = Load Text File( "$downloads\SampleFile.jsl" );
// create a table to add to
nt = New Table( "Example",
New Column( "PartID", "Character" ),
New Column( "Bin", "Numeric" )
);
// create a list with strings of each line of data
lines = Words( str, "\!N" );
// loop through each line of the file
for(i=1,i<=nitems(lines),i++,
if( // If the line starts with PART ID,
starts with(lines[i], "PART ID" ),
// it's the start of a new row
nt << add rows(1);
// grab the PartID at the end of the line
nt:PartID = Word( -1, lines[i] );
,
// if it starts with a bunch of dashes
starts with(lines[i], "---" ),
// the next line must contain column values
// so grab them and split them by spaces
colVals = Words( lines[i+1], " " );
// set the Bin column to the value in the third position
nt:Bin = colVals[3];
);
)
Ce script crée le tableau suivant:
