2013-04-07 62 views
-1

我想解析一個文本文件,以便三列第二列(高)和第三列(低)值轉到兩個不同的空字符串。但不幸的是,我無法得到它的工作,儘管我已經嘗試了無數次。我的文本文件看起來像這樣python文件解析查詢

Boston July Temperatures 
------------------------- 

Day High Low 
------------ 

1 91 70 
2 84 69 
3 86 68 
4 84 68 
5 83 70 
6 80 68 
7 86 73 
8 89 71 
9 84 67 
10 83 65 

這裏是我的代碼,我至今嘗試過。

low_Temp=[] 
high_Temp=[] 
inFile = open('julyTemps.txt') 
for line in inFile.readlines(): 
    fields = line.strip(' ') 
    if len(fields) < 3 or not fields[0].isdigit(): 
     pass 
    else: 
     low_Temp.append(fields[2]) 
     high_Temp.append(fields[1]) 
print low_Temp 
print high_Temp 

最後我的目標是計算這些值之間的差異,繪製跨天的差別。我想我能做到這一點,如果我能弄清楚爲什麼我沒有在空載體中獲得正確的值。

有人可以解釋我做錯了什麼。在此先感謝....

回答

0

你要確保你在通用模式下打開文件時,考慮到不同的行尾:

inFile = open('julyTemps.txt', 'rU') # read universal 

你的一般方法則沒問題。這是更好的通過文件對象,而不是使用readlines方法迭代,雖然:

for line in inFile: 
    line = line.strip() # remove newline characters 
    fields = line.split(' ') 

    if len(fields) == 3: 
     _, high, low = fields 
     high_Temp.append(float(high)) 
     low_Temp.append(float(low)) 

什麼是你與你目前的做法(或一個我在上面貼)得到確切的問題?

+0

感謝您的快速響應。我基本上得到了兩個字符串,看起來像這樣...我仍然不明白爲什麼我得到這些... low_Temp = ['9','8','8','8','8', '8','8','8','8','','','','','','','','','','','','' '','','','','','','','','',''] high_Temp = ['','','','','' ,'','','','0','1','2','3','4','5','6','7','8',' 9','0','1','2','3','4','5','6','7','8','9','0','1' ] – upendra 2013-04-07 04:09:17