2013-07-16 60 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