Quali sono i metadati "sep =" che puoi aggiungere ai CSV?


24

Durante il tentativo di scoprire come far aprire correttamente CSV in Excel su un PC spagnolo (appartenente a un cliente) ho trovato molte risposte che consigliano di utilizzare sep=,nella parte superiore del file:

Sulla faccia di esso, questo approccio funziona, ma nessuna di queste risposte dare ulteriori informazioni su dove questa opzione metadati proviene. Ho cercato di cercare ciò che significa (e quindi ho trovato tutte quelle risposte) ma non sono stato in grado di ottenere ulteriori informazioni soprattutto perché la punteggiatura è notoriamente difficile da cercare.

La mia preoccupazione principale è se questa è una funzionalità specifica di Excel . Ho il sospetto che lo sia, ma non ho trovato nulla di definitivo per confermarlo.

Alcune domande correlate sono:

  • Quali personaggi possono essere usati in questa impostazione?
  • Quali altre impostazioni sono disponibili (es. Carattere di fine riga, carattere di citazione, ecc.).
  • Esistono altri strumenti che supportano ufficialmente questa funzione?

Spero che ci sia un pezzo di documentazione da qualche parte a cui qualcuno può indicarmi che risponderà a tutte queste domande e altro; Non sono riuscito a trovarlo.

Alcuni chiarimenti:

Non sep=è un parametro per un parser. È pensato per essere inserito nel CSV. Esempio:

sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"

4
Sì, questo è specifico per Excel .
Raystafarian,

2
Sei stato in grado di ottenere qualcosa su questo? Sono perplesso con la stessa domanda e non ho ancora trovato le specifiche MS che descrivono questa funzione. Se questa funzionalità non è documentata da MS, come diavolo è uscito in primo luogo?
toddlermenot

@toddlermenot Purtroppo no. Tutto quello che ottengo sono le persone che affermano che si tratta di Excel specifico senza nulla a sostegno di tale affermazione, il che è deludente.
Burhan Ali,

Risposte:


7

RFC 4180 è comunemente riconosciuto come lo standard per il formato CSV e non menziona alcuna caratteristica del genere.

Il modello W3C per dati tabulari e metadati sul Web lo menziona come una funzionalità che non rientra nel loro ambito di applicazione:

Molti file "CSV" incorporano metadati, ad esempio nelle righe prima della riga di intestazione del documento CSV. Questa specifica non definisce alcun formato per l'incorporamento di metadati nei file CSV, a parte i nomi delle colonne nella riga di intestazione.

Quindi, anche se non ho trovato alcuna prova diretta del fatto che questa funzionalità sia specifica di Excel, ciò sembra essere ancora vero in quanto non sembra esserci alcun documento di standardizzazione che copra tale funzionalità.


Buona provenienza. Una cosa che dovrei dire è che sep = | definisce il separatore per l'uso in Excel come carattere pipe ('|'). Non è ampiamente usato ma non è esclusivo di Excel. È una direttiva separata. Le versioni internazionali di Excel iirc hanno caratteri diversi, ad esempio la lingua europea su una macchina che esegue Excel utilizza punti e virgola.
var firstName

1
Sono consapevole dell'uso (forse non era del tutto chiaro dalla mia risposta). Stavo solo sottolineando che sembra che Excel abbia introdotto quella funzionalità, essendo basata su qualsiasi tipo di standard (pubblico).
Stefan Kögl,


-1

L'istruzione sep = è utilizzata in tutti i paesi in cui la virgola viene utilizzata come delimitatore decimale, come l'Italia. Poiché Excel esporta CSV usando il punto e virgola anziché le virgole in quei paesi, se vuoi essere sicuro che il file possa essere letto negli Stati Uniti o in altri paesi, DEVI

Settembre =;

in cima al file. Questo è specifico di Excel e potrebbe essere ignorato da altre applicazioni.


-2

Quasi tutti gli strumenti che possono importare da file .csv riconoscono che la virgola non è l'unico separatore possibile, ad esempio le schede sono comuni da molto tempo. Penso che questo risalga anche ai giorni delle schede perforate, secondo cui ci deve essere un personaggio riconosciuto come fine del campo dati - ad eccezione dei sistemi che utilizzano campi a larghezza fissa o campi prefissati praticamente ogni sistema ha bisogno di questo dall'avvento dei computer.

I 3 elementi essenziali sono un separatore di campo, un separatore di record e un indicatore di fine dati, CSV utilizza per impostazione predefinita rispettivamente virgola, newline e fine del file, ma è possibile utilizzare praticamente qualsiasi input valido, tuttavia è necessario un meccanismo per sfuggire ai marcatori speciali se si verificano all'interno dei tuoi dati validi.

Un sistema storico in cui mi sono imbattuto ha usato newline per la fine del campo, 2 righe vuote per la fine del record e *!*!* END *!*!*per la fine dei dati. Mi sono trovato comunemente ,\t|:usato come un separatore di campo insieme a vari personaggi di controllo.

Una cosa di cui diffidare è che i francesi e altri usano la virgola come un punto decimale - questo può causare tutti i tipi di divertimento e giochi. Esiste un certo grado di standardizzazione per i file CSV in rfc4180 ma a volte è necessario modificare manualmente i file quando si esporta da un programma e si importa in un altro.

Per rispondere alla seconda parte della tua domanda, Python, ad esempio, include un lettore / scrittore CSV come una delle librerie standard che offre le seguenti opzioni:

  • delimiter- Questo è il separatore di campo (a meno che non sia sfuggito).
  • doublequote- Se vero, allora " all'interno di un campo verrà rappresentato come""
  • escapechar- rimuove qualsiasi significato speciale da qualsiasi carattere seguente, ad esempio se è impostato su, la \citazione può essere rappresentata come\"
  • lineterminator- di solito uno dei \n, \r, \r\no\n\r
  • quotechar- carattere usato per citare le stringhe, di solito "o'
  • quoting - contrassegna come uno di:
    • ALL - Ogni campo è tra virgolette, ovvero: "1","Free Beer","ASAP"
    • MINIMAL - Cita solo i campi con caratteri speciali, ovvero: 1,"Beer, (Free)", Now, Please
    • QUOTE_NONNUMERIC - Cita tutto ciò che non è un numero, ovvero: 1,"Beer, (Free)", "Now", "Please"
    • NONE - Non citare invece la fuga, ovvero: 1,Beer\, (Free), Now, Please
  • skipinitialspace- salta qualsiasi spazio iniziale di ciascun campo in modo da poterlo utilizzare , piuttosto che solo ,come separatore di campo.

Generalmente, uno strumento più flessibile e ben congegnato che può importare file CSV è il maggior numero di queste opzioni (possibilmente con nomi e / o meccanismi diversi) che avrà.


2
Questo non risponde alla mia domanda. Spiega quali sono i CSV, di cui sono già a conoscenza. La mia domanda riguarda una specifica sintassi. C'è qualche sfondo che potrei aggiungere alla mia domanda per chiarire le cose?
Burhan Ali,

1
Grazie ma non aiuta ancora. sep=non è un parametro per un parser. Ho aggiunto alcuni chiarimenti alla mia domanda.
Burhan Ali,

1
@SteveBarnes Ma qualche strumento, ad esempio la libreria Python che menzioni, consente le opzioni come parte del contenuto del file? Questo è, credo, il punto principale della domanda.
Randy Orrison,

1
"Perché sono una delle tante stranezze eccellenti." È vero? Fa parte di ciò che sto cercando di capire. Non voglio sapere cos'è un CSV. Non voglio sapere come analizzare un CSV. Voglio sapere cos'è sep=e da dove viene.
Burhan Ali,

2
sep = è un metodo di suggerimento specifico di Microsoft Excel che non è coperto da alcuna specifica non Microsoft che posso trovare. Viene da una parte di Microsoft.
Steve Barnes,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.