2013-07-16 91 views
1

編程通常是新手。這是我的代碼循環遍歷一個循環來改變一個條件語句,python

for b in range(LengthSpread): 
    Strip = ReadSpread[b].rstrip('\n') 
    SplitData = ReadSpread[b].split(",") 
    PlotID = SplitData[1] 
    PlotIDnum = float(PlotID) 
    if PlotIDnum == 1: 
     List = SplitData 
     print List 
     OpenBlank.writelines('%s\n\n\n\n\n' % List) 

最終我想根據改變整個數據集中的每個plotIDnum來查找數據。我將如何更改條件if語句中的數字,而不會實際更改數字。可能使用for循環或while循環。我的思緒無法圍繞它。

這是inputdata

09Tree #PlotID PlotID 
1  1  Tree    
2  1  Tree   
3  2  Tree   
4  2  Tree   
6  4  Tree   
7  5  Tree   
8  5  Tree   
9  5  Tree   

我想我的輸出由plotID#來組織,每個輸出放置在任何一個新的電子表格或各有獨特的數據集中在一個新的標籤的例子

感謝您的任何幫助

+0

只是一個建議:扔PlotIDnum的所有值在數組然後遍歷該數組。 – pistal

+4

我強烈建議您閱讀有關Python命名約定,並遵循它們。上面的代碼幾乎是惡意無法讀取的。 – roippi

+1

除了@roippi的建議之外,能否請您提供一些示例輸入和期望輸出(如果適用)? – woozyking

回答

1

我不知道你想如何組織你的文件,但也許你可以使用劇情ID作爲文件名(或選項卡的名稱或其他)的一部分。這樣,你甚至不需要額外的循環,例如:

for b in range(length_spread): 
    data = read_spread[b].rstrip('\n') 
    splitted = data.split(',') 
    plot_id = splitted[1] # Can keep it as a string 

    filename = 'plot_id_' + plot_id + '.file_extension' 
    spreadsheet = some_open_method(filename, option='append') 
    spreadsheet.writelines('%s\n\n\n\n\n' % splitted) 
    spreadsheet.close_method() 

也許你也可以利用with聲明:

with some_open_method(filename) as spreadsheet: 
    spreadsheet.writelines('%s\n\n\n\n\n' % splitted) 

這保證(如果你的文件對象支持此)即使您的程序在寫入文件期間遇到異常,文件也會正常關閉。

如果你想使用某種額外的循環,我認爲這是最簡單的例子,假設你知道所有的陰謀ID的事先:

all_ids = [1, 2, 4, 5] 
# Note: using plot_id as integer now 
for plot_id in all_ids: 
    filename = 'plot_id_%i.file_extension' % plot_id 
    spreadsheet = some_open_method(filename, option='write') 
    for b in range(length_spread): 
     data = read_spread[b].rstrip('\n') 
     splitted = data.split(',') 
     if plot_id == int(splitted[1]): 
      spreadsheet.writelines('%s\n\n\n\n\n' % splitted) 
    spreadsheet.close_method() 
+0

我所有的plot_id都來自與我所有其他數據相同的文件。所以我不得不重新調整你的代碼以適合我的。它的工作完美。我用你的代碼和額外的循環,並使用all_ids數組。我只需要一點指導就可以讓我的想法走上正確的道路。我的變量名稱之前有點混亂,我知道如何讓我的代碼更清晰可讀。謝謝你的幫助,我肯定會再次回來。 –

+0

沒問題!我認爲你的變量名稱的主要問題是你使用了CapitalizedWords(= CamelCase),它在Python中通常用於類和例外名稱以及特殊關鍵字如「True」和「False」,因此在代碼段中突出顯示。有關命名約定的更多信息,請參閱[這裏](http://www.python.org/dev/peps/pep-0008/#naming-conventions)。也不要在Python中使用名稱'list',因爲這是非常常見的內置類型的名稱。 – 2013-07-18 11:08:17