1

一般是编程新手。这是我的代码

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 循环。无法绕开它。

这是输入数据的示例

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# 组织,并将每个输出放在一个新的电子表格中,或者将每个唯一的数据集放在一个新选项卡中

谢谢你的帮助

4

1 回答 1

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()
于 2013-07-16T20:45:30.113 回答