2013-11-21 64 views
0

我試圖解析文件格式如下蟒蛇解析輸入,使輸入的總和

1999 
I 
Willem Jan van Steen   9859 77 
Guillaume Kielmann   5264 77 
Guillaume Bos    8200 6 

(該文件是更長的時間,並通過學年分隔(如1999年)和不同研究(如'I')我唯一需要處理的是最後一個數字(如77,77,6)這個數字是一個百分比,最終目標是製作一個由10個條形圖組成的條形圖,條形圖包括從文件的百分比落入條形圖範圍(例如條形圖從70%到80% - >然後如果上面的輸入是整個文件,總和將是2,和條形圖將是高度2.但我的第一個問題是,我不知道如何解析輸入..我是thi nking該python應該讀取行,然後從索引(所以製作一個範圍),百分比數字開始用數字「做些什麼」( - >查看它們落在哪個範圍的條形圖中,然後製作一個循環對於一個百分比下跌多少倍的總和條形圖..)

希望有人能幫助我!

+0

歡迎堆棧溢出!看起來你希望我們爲你寫一些代碼。 儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常僅在海報已嘗試自行解決問題時才提供幫助。 證明這一努力的一個好方法是包含迄今爲止編寫的代碼, 示例輸入(如果有的話),期望的輸出和實際獲得的輸出(控制檯輸出,堆棧跟蹤,編譯器錯誤 - 無論什麼適用)。 您提供的細節越多,您可能收到的答案越多。檢查[FAQ]並[問] –

回答

0

使用str.rsplit()將字符串拆分爲單詞,從右邊開始計算。如果你傳入None,它將在任意寬度的空白處分割,給你整齊的剝離字符串和一個計數,讓你在第一列保留空格。

的是什麼意思簡短演示:

>>> 'Willem Jan van Steen   9859 77\n'.rsplit(None, 2) 
['Willem Jan van Steen', '9859', '77'] 

在這裏,在名稱的空格都被保留,但最後這兩個數字現在是在一個單獨的列表元素。最後的換行消失了。

如果您遍歷一個打開的文件對象,你會得到不同的線,給你一個方法,通過線解析文件行:

with open(inputfilename) as inputfh: 
    for line in inputfh: 
     columns = line.rsplit(None, 2) 
     if len(columns) < 3: 
      continue # not a line with name and numbers 
     percentage = int(columns[2]) 
     if 70 <= percentage <= 80: 
      # we have a line that falls within your criteria