2010-10-31 121 views
5

我是新來的python一直使用它的圖形,但從來沒有做過其他問題。我的問題是如何閱讀這個文件,這是選項卡或空格分隔,並在Python中的標題,我知道如何做逗號分隔的文件,但沒有做到這一點?閱讀python文件

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 

還有一種方法來查找兩個日期之間的天數差異。

回答

4

對於簡單的任務,您可以使用str.split()方法。 split()將分隔符作爲其參數,但如果沒有給定分隔符,則以空格分隔。

>>> lin="a b c d" 
>>> lin.split() 
['a', 'b', 'c', 'd'] 
17

csv模塊的相同技術不起作用嗎?

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

分隔符可以是「\ s」或「\ t」。

您還可以使用DictReader這樣:

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

你也可以用蠻力技術

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

拆分功能:

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

爲了計算無天,使用日期時間模塊:http://docs.python.org/library/datetime.html

>>> import datetime 
>>> k = datetime.date(2010, 05, 26) - datetime.date(2010, 02, 10) 
>>> k.days 
105 
>>> 
+0

因此,如果我使用CSV閱讀器我如何訪問輸入文件中的每一行的每個元素。 – user458858 2010-10-31 23:32:09

+0

使用csv.DictReader,並且標題行將用於讀取以下行中每個相應值的鍵,然後每行將返回一個帶有行值作爲行字典值的字典。 – PaulMcG 2010-11-01 01:05:17

+0

太棒了,從來不知道我可以使用csv與非csv文件。但使用delimiter =「\ s」似乎不起作用。 – sykora 2010-11-01 06:53:20