2013-01-09 18 views
6

Sto usando il seguente per leggere un file separato da tabulazioni. Ci sono tre colonne nel file ma la prima colonna viene ignorata quando stampo l'intestazione della colonna only.how posso includere il prima colonna troppopython che legge un file separato da tabulazione usando delimitatore

f = open("/tmp/data.txt") 
for l in f.readlines(): 
    print l.strip().split("\t") 
    break 
    f.close() 

uscita: [ 'session_id \ t', '\ tevent_id_concat']

il nome della prima colonna è id dove s non stampato nella matrice sopra

EDIT

stampa l produce il seguente

EDIT 1:

'id\tsession_id\tevent_id_concat\r\n' 

    Output: ['id\t', '\tevent_id_concat'] 
+0

Dovrebbe funzionare. Puoi aggiungere 'print l' prima della tua istruzione' print' e mostrare l'output? Post scriptum Inoltre, non c'è bisogno di '.readlines()' qui, praticamente come sempre. –

+0

ho dato la stampa l – Rajeev

+0

Potete effettivamente mostrare l'output di 'print repr (l)'? – poke

risposta

6

Dovrebbe funzionare, ma è meglio usare 'con':

with open('/tmp/data.txt') as f: 
    for l in f: 
     print l.strip().split("\t") 

se non lo fa, allora probabilmente il tuo file non ha il formato richiesto.

+0

Ma come si può "spogliare" una parola? –

+0

L'approccio basato sul modulo dovrebbe essere preferito in quanto gestisce i numerosi possibili casi limite –

14

Vorrei anche suggerire di utilizzare il modulo csv. È facile da usare e si adatta meglio se si desidera leggere in tabelle come strutture memorizzate in un formato simile a CSV (tab/spazio/qualcos'altro delimitato).

Il module documentation dà buoni esempi in cui l'utilizzo più semplice è dichiarato essere:

import csv 
with open('/tmp/data.txt', 'r') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     print row 

Ogni riga è un elenco che è molto utile se si vuole fare manipolazioni su indici.

Se si desidera modificare il delimitatore, esiste una parola chiave per questo, ma spesso sto bene con i dialetti predefiniti che possono anche essere definiti tramite una parola chiave.

import csv 
with open('/tmp/data.txt', 'r') as f: 
    reader = csv.reader(f, dialect='excel', delimiter='\t') 
    for row in reader: 
     print row 

io non sono sicuro se questo risolverà i vostri problemi, ma l'utilizzo di moduli elaborati vi assicurerà che qualcosa non va con il file e non il codice se l'errore rimane.

+0

Non c'è bisogno di fare 'reader = csv.reader (f, dialect = 'excel', delimitatore = '\ t')', c'è un Il formato 'excel-tab' è stato definito in modo tale da poterlo utilizzare semplicemente piuttosto che modificare il formato 'excel': 'reader = csv.reader (f, dialect = 'excel-tab')' –

Problemi correlati