Panoramica:
Il tuo compito è prendere l'input CSV in key=valueformato e allinearlo in un modo più organizzato (vedi sotto).
Ingresso:
Sempre tramite stdin . I record saranno sempre nella seguente forma key=value:
foo=bar,baz=quux
abc=123,foo=fubar
baz=qwe,abc=rty,zxc=uiop,foo=asdf
- Non ci sarà un elenco di possibili chiavi in anticipo, è necessario trovarle nel testo di input.
- La fine dell'input verrà segnalata da
EOF, qualunque sia l'implementazioneEOFappropriata per il tuo sistema operativo.
Produzione:
La prima riga dell'output sarà un elenco di tutti i tasti, in ordine alfabetico (anche se i tasti sono tutti numeri). Successivamente, stampa ogni record nello stesso formato CSV con l'intestazione del numero appropriato, senza le chiavi elencate. Quindi, per l'esempio sopra, l'output corretto sarebbe:
abc,baz,foo,zxc
,quux,bar,
123,,fubar,
rty,qwe,asdf,uiop
FAQ:
- Devo preoccuparmi di input formattati in modo errato?
- No. Il tuo programma può fare quello che vuole (generare un'eccezione, ignorare, ecc.) Se l'input non è formattato correttamente, ad esempio una riga di
foo,bar,baz
- No. Il tuo programma può fare quello che vuole (generare un'eccezione, ignorare, ecc.) Se l'input non è formattato correttamente, ad esempio una riga di
- Come gestisco i caratteri speciali di escape?
- Si può presumere che non vi saranno dati aggiuntivi
,o=nei dati che non fanno parte delkey=valueformato."non ha alcun significato speciale in questo concorso (anche se lo fa nel CSV tradizionale).non è nemmeno speciale in alcun modo. - Le righe devono corrispondere alla seguente regex:
^([^=,]+=[^=,]+)(,[^=,]+=[^=,]+)*$- Pertanto, sia le chiavi che i valori corrisponderanno
[^=,]+
- Pertanto, sia le chiavi che i valori corrisponderanno
- Si può presumere che non vi saranno dati aggiuntivi
- Che dire di
CRLFvs.LF?- Puoi scegliere qualsiasi delimitatore appropriato per la tua piattaforma. La maggior parte delle lingue lo gestisce senza uno speciale codice di delimitazione.
- Devo stampare le virgole finali se le ultime colonne non esistono?
- Sì. Vedi l'esempio
- Sono consentiti parser CSV o altri strumenti esterni simili?
- No. È necessario analizzare i dati da soli.