Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

reading a file in python

Tags:

python

string

csv

I am new to python been using it for graphics but never done it for other problems. My question is how to read this file which is tab or space delimited and has headers in python, i know how to do comma delimted file but not done this on?

ID  YR  MO  DA  YrM  MoM  DaM  
100  2010  2  20  2010  8  2010  30  
110  2010  4  30  2010  9  2010 12     
112  2010  8  20  2010  10  2010  20  

Also is there a way to find the difference of number of days between two dates.

like image 843
user458858 Avatar asked Oct 31 '10 22:10

user458858


2 Answers

Does the same technique for csv modules does not work?

import csv
reader = csv.reader(open("filename"), delimiter="\t")

Delimiter can be "\s" or "\t".

You can also use DictReader this way:

f = open(filename, '')
try:
    reader = csv.DictReader(f)
    for row in reader:
        print row
finally:
    f.close()

you can also use brute force technique

for line in open(filename):
    listWords = line.split("\t")

Split function:

>>> t = 'ID YR MO DA YrM MoM DaM'
>>> t.split(" ")
['ID', 'YR', 'MO', 'DA', 'YrM', 'MoM', 'DaM']

For calculating no of days, use datetime module : http://docs.python.org/library/datetime.html

>>> import datetime
>>> k = datetime.date(2010, 05, 26) - datetime.date(2010, 02, 10)
>>> k.days
105
>>> 
like image 192
pyfunc Avatar answered Sep 20 '22 16:09

pyfunc


For simple tasks, you can just use the str.split() method. split() takes the delimiter as its parameter, but splits on whitespace if none is given.

>>> lin="a b c d"
>>> lin.split()
['a', 'b', 'c', 'd']
like image 41
MAK Avatar answered Sep 19 '22 16:09

MAK