Versione breve: i file CSV su cui sto lavorando che occasionalmente contengono stringhe di testo che includono una virgola.
Il JSL che ho scritto per aprire questa tabella divide molto bene la stringa in corrispondenza della virgola e invia la parte dopo la virgola nella colonna di dati successiva, esattamente dove non va.
Excel risolverà il problema all'apertura di questo file.
C'è un modo per fare in modo che JMP/JSL tratti questa virgola solo come un carattere e non come un delimitatore?
Oppure, in altre parole: esiste un modo per modificare lo script seguente in modo che le virgole tra virgolette vengano ignorate come potenziali delimitatori?
Particolari:
JMP 13.2.1, 64 bit in esecuzione su Windows 7.
Estratti del file CSV:
Aprendolo come testo nel Blocco note, la riga incriminata contiene:
...11:00,Ignorato,"Luce buttata via, ne avranno un'altra che metteranno",,,,
Nota: per quanto ne so, le virgolette doppie attorno alla voce del test sono le uniche nei dati.
Cosa mostra Excel e spero di uscire da JMP:
| colonna 11 | colonna 12 |
| Commento | Risultati dei parassiti |
| Luce buttata via, ne avranno un'altra da accendere | |
Cosa invece mi sta dando JMP:
| colonna 11 | colonna 12 |
| Commento | Risultati dei parassiti |
| Luce buttata via | hanno un'altra luce che accenderanno |
Colonna 12/Risultati di parassiti normalmente direbbe qualcosa sugli insetti trovati, topi, ecc. e NON dovrebbe essere mostrato nella metà posteriore del commento. Dovrebbe essere vuoto su questa riga.
Il pezzo di script che sto usando per aprire la tabella è il seguente:
Open(
qfull,
columns(
Column( "Company", Character, "Nominal" ),
Column( "Address", Character, "Nominal" ),
Column( "City", Character, "Nominal" ),
Column( "State", Character, "Nominal" ),
Column( "Zip", Character, "Nominal" ),
Column( "Area", Character, "Nominal" ),
Column( "Device Type", Character, "Nominal" ),
Column( "Device Name", Character, "Nominal" ),
Column( "Date", Numeric, Informat( "m/d/y h:m" ), "Continuous", Format( "ddmonyyyy", 19 )),
Column( "Date", Character, "Nominal"),
Column( "Activity", Character, "Nominal" ),
Column( "Comment", Character, "Nominal" ),
Column( "Pest Findings", Character, "Nominal" ),
Column( "Questions", Character, "Nominal" ),
Column( "Materials", Character, "Nominal" )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 1 ) ),
Strip Quotes( 0 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 7 ),
Data Starts( 8 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
C'è un modo per regolare questo script in modo che le virgole tra virgolette vengano ignorate come potenziali delimitatori?
Si tratta di un bug, JMP non dovrebbe separare la parte del valore tra virgolette. Sfortunatamente, bisognerà attendere JMP 14.1 prima che il problema venga risolto.
Brian Corcoran
Sviluppo JMP
Ho un problema simile ma non in un contesto con script. Sto aprendo un file Triple-S collegato a un file di dati CSV. I dati con risposta aperta vengono racchiusi correttamente in base agli standard CSV, ma JMP interpreta ancora le virgole all'interno delle stringhe tra virgolette come separatori di campo.
Per esempio
123456,1,"Lorem ipsum dolor sit amet, consectetuer...",3,5
Viene analizzato in 6 colonne invece delle 5 colonne corrette.
Ho giocato con le varie impostazioni di importazione per i file di testo nelle preferenze, ma senza alcun effetto.
Ogni pensiero sarebbe apprezzato. Grazie!