title: How to use a .SAS or SPS metadata file to read a CSV as a Pandas dataframe?
body: <p>I have a big CSV file and it comes with two metadata description files. One has a <code>.sas</code> extension and the other a <code>.sps</code>. Opening them, they describe the CSV data format and categories. The files describe the data format and possible categories of each column. For example, a column with values 1 or 2 is mapped to <em>yes</em> and <em>no</em>.</p>
  <p><strong>How can I use these metadata files to help me read the CSV file?</strong></p>
  <p>I can easily read it using read_csv, but these files are useful to automatically create my columns with the possible categories. I can create a parser for them, but there must be a package or function to do it. Maybe I'm not using the correct search terms.</p>
  <p>Here is the <code>.sas</code> file (sorry, it is Portuguese):</p>
  <pre><code>proc format;
  Value $SG_AREA
          CH='Ciךncias Humanas'
          CN='Ciךncias da Natureza'
          LC='Linguagens e Cףdigos'
          MT='Matemבtica';
  
  Value $TP_LINGUA
          0='Inglךs'
          1='Espanhol';
  
  Value $IN_ITEM_ADAPTADO
          0='Nדo'
          1='Sim';
  
  
  DATA WORK.ITENS_2018;
  INFILE 'C:\ITENS_PROVA_2018.csv' /*local do arquivo*/
          LRECL=33
          FIRSTOBS=2
          DLM=';'
          MISSOVER
          DSD ;
  
  INPUT
          CO_POSICAO       : BEST2.
          SG_AREA          : $CHAR2.
          CO_ITEM          : BEST6.
          TX_GABARITO      : $CHAR1.
          CO_HABILIDADE    : BEST2.
          TX_COR           : $CHAR7.
          CO_PROVA         : BEST3.
          TP_LINGUA        : $CHAR1.
          IN_ITEM_ADAPTADO : $CHAR1. ;
  
  ATTRIB  SG_AREA          FORMAT = $SG_AREA20.;         
  ATTRIB  TP_LINGUA        FORMAT = $TP_LINGUA8.;       
  ATTRIB  IN_ITEM_ADAPTADO FORMAT = $IN_ITEM_ADAPTADO3.;
  
  LABEL
  CO_POSICAO='Posiחדo do Item na Prova'
  SG_AREA='ֱrea de Conhecimento do Item'
  CO_ITEM='Cףdigo do Item'
  TX_GABARITO='Gabarito do Item'
  CO_HABILIDADE='Habilidade do Item'
  TX_COR='Cor da Prova'
  CO_PROVA='Identificador da Prova'
  TP_LINGUA='Lםngua Estrangeira '
  IN_ITEM_ADAPTADO='Item pertencente א prova adaptada para Ledor'
  
  ;RUN;
  </code></pre>
  <p>And here you can see the equivalent <code>.sps</code> file:</p>
  <pre><code>GET DATA
    /TYPE=TXT
    /FILE= &quot;C:\ITENS_PROVA_2018.csv&quot; /*local do arquivo*/ 
    /DELCASE=LINE
    /DELIMITERS=&quot;;&quot;
    /ARRANGEMENT=DELIMITED
    /FIRSTCASE=2
    /IMPORTCASE= ALL
    /VARIABLES=
  CO_POSICAO F2.0
  SG_AREA A2
  CO_ITEM F6.0
  TX_GABARITO A1
  CO_HABILIDADE F2.0
  TX_COR A7
  CO_PROVA F3.0
  TP_LINGUA A1       
  IN_ITEM_ADAPTADO A1.
  CACHE.
  EXECUTE.
  DATASET NAME ITENS_18 WINDOW=FRONT.
  
  VARIABLE LABELS
  CO_POSICAO  Posiחדo do Item na Prova
  SG_AREA     ֱrea de Conhecimento do Item
  CO_ITEM     Cףdigo do Item
  TX_GABARITO Gabarito do Item
  CO_HABILIDADE   Habilidade do Item
  TX_COR      Cor da Prova
  CO_PROVA    Identificador da Prova
  TP_LINGUA       Lםngua Estrangeira
  IN_ITEM_ADAPTADO    Item pertencente א prova adaptada para Ledor.
  
  
  VALUE LABELS
  SG_AREA
          &quot;CH&quot;    Ciךncias Humanas
          &quot;CN&quot;    Ciךncias da Natureza
          &quot;LC&quot;    Linguagens e Cףdigos
          &quot;MT&quot;    Matemבtica
  /TP_LINGUA
          0   Inglךs
          1   Espanhol
  /IN_ITEM_ADAPTADO
          0   Nדo
          1   Sim.
  </code></pre>
  <p>You can see that they describe the metadata for each column.</p>