【问题标题】:Iterate through a loop to change a conditional statement, python遍历循环以更改条件语句,python
【发布时间】:2013-07-16 15:55:22
【问题描述】:

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

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

感谢您的帮助

【问题讨论】:

  • 只是一个建议:将 PlotIDnum 的所有值放入一个数组中,然后遍历该数组。
  • 我强烈建议您阅读 python 命名约定,并遵循它们。上面的代码几乎是恶意无法读取的。
  • 在@roippi 的建议之上,您能否提供一些示例输入和所需的输出(如果适用)?
  • CamelCase 和 Python 不能混用。

标签: python loops if-statement for-loop


【解决方案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()

【讨论】:

  • 我所有的 plot_ids 都来自与我所有其他数据相同的文件。所以我不得不重新调整你的代码以适应我的。它工作得很好。我将您的代码与额外的循环一起使用,并使用了 all_ids 数组。我只需要一点指导来让我的想法走上正确的道路。之前我的变量名有点混乱,我明白如何让我的代码更清晰易读。谢谢大家的帮助,我一定会再回来的。
  • 没问题!我认为你的变量名的主要问题是你使用了 CapitalizedWords (= CamelCase),它在 Python 中通常用于类和异常名称以及特殊关键字,如 TrueFalse,因此在你的代码中突出显示 sn-页。有关命名约定的更多信息,请参阅here。也不要在 Python 中使用名称 list,因为这是一个非常常见的内置类型的名称。
猜你喜欢
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多