estrarre un pungiglione particolareCiao,
Voglio estrarre i valori bin dalle righe e archiviarli nell'elenco.
Per esempio-
BIN = "B" 8 "Bad Bump" -> Voglio estrarre la lettera "B" dalla stringa e memorizzarla nell'elenco
BIN = "P" 6153 "PCM" -> Voglio estrarre la lettera "P" dalla stringa e memorizzarla nell'elenco e allo stesso modo per tutte le righe contenenti bin
Ecco cosa ho provato finora. Estrae solo la riga 13
Names Default To Here( 1 );
Clear Globals();
Clear Log();
dt = current data table();
asa = dt << Get Rows Where (Contains(as column(3), "BIN") & Contains(as column(3), "NULL") == 0);
binlist = {};
startrownumber= asa[1];
for(k =1, k<= Nitems(asa), k++,
Insertinto(binlist, db_test:Bins[asa])
);
binvaluelist= {};
for (i = startrownumber, i <= nitems(asa), i++,
newlist = dt:Bins[i];
word_list = words(newlist, "\!"\!"");
insertinto(binvaluelist, word_list);
);
SceneggiaturaRe: estrarre un pungiglione particolareSe questo è correlato all'analisi del testo da Importa i valori xey dal file di testo nella tabella jmp e crea una mappa wafer Userei un approccio diverso. Ma supponiamo di iniziare con la tabella di dati esistente.
Molto probabilmente userei Regex se il modello rimane sempre lo stesso:
Names Default To Here(1);
dt = Open("$DOWNLOADS/Bin table.jmp");
bins = {};
bin_rgx = "\[(?:BIN = \")(.*)(?:\" \d*)]\";
For Each Row(dt,
If(Starts With(:Bins, "BIN = "),
bin_str = Regex(:Bins, bin_rgx, "\1");
Insert Into(bins, bin_str);
);
);
show(bins); // bins = {".", "1", "2", "B", "P", "N", "A", "3", "F"};Re: estrarre un pungiglione particolareGrazie Jarmo. Funziona
Re: estrarre un pungiglione particolare@jthi
Ho provato su un wafer diverso e non funziona per alcuni contenitori
CESTINI = 4
BIN = "A" 2 "Allineamento_Dado"
CESTINO = "C" 28615 "D1QM1804101"
CESTINO = "D" 23501 "D1QM1804102"
BIN = "F" 0 "Fallito" ""
BIN = "N" 0 "Non testato"
BIN = "P" 2806 "Die PCM" ""
bins = {"A", "C", "D", "F\!" 0 \!"Fallito", "N", "P\!" 2806 \!"Il PCM muore"};
dt = current data table();
bins = {};
bin_rgx = "\[(?:BIN = \")(.*)(?:\" \d*)]\";
For Each Row(dt,
If(Starts With(:Bins, "BIN = "),
bin_str = Regex(:Bins, bin_rgx, "\1");
Insert Into(bins, bin_str);
);
);
show(bins); // bins = {"A", "C", "D", "F\!" 0 \!"Fail", "N", "P\!" 2806 \!"PCM die"};
Re: estrarre un pungiglione particolareSuggerirei di testare la regex su JMP o su https://regex101.com/r/DPngn1/1 . Scegli una stringa che non funziona e poi provala per vedere come e perché fallisce. In questo caso il mio pattern regex richiede una leggera modifica poiché a volte corrisponde troppo.