使用IF语句写入文件

时间:2014-06-07 15:47:48

标签: python csv if-statement for-loop

我正在使用Weather Underground API将历史天气数据写入csv。我的Python程序没有任何问题。但是,我想添加一个条件语句,告诉我的程序只写下包含下雨的天气观测。所以,如果它在底特律的观察j下雨,那么写小时,条件,下雨,下雪,temp_f。

以下是该计划的最后一部分。 “对于范围内的j”循环通过给定日期的天气观测。 “雨”是二元的。

同样,程序中的其他所有内容都很有效。我对工作程序的唯一改变是“if rain == 0:”......现在它不会将数据写入我的csv。没有错误消息。

非常感谢任何帮助。

  for j in range(len(parsed_json['history']['observations'])):
            hour = parsed_json['history']['observations'][j]['date']['hour']
            conditions = parsed_json['history']['observations'][j]['conds']
            rain = parsed_json['history']['observations'][j]['rain']
            snow = parsed_json['history']['observations'][j]['snow']
            temp_f = parsed_json['history']['observations'][j]['tempi']

            if rain == 0: 
                myfile.write('\n')
                myfile.write(str(dd[i]))
                myfile.write(',')
                myfile.write(str(hour))
                myfile.write(',')
                myfile.write(str(cities[b]))
                myfile.write(',')
                myfile.write(str(temp_f))
                myfile.write(',')
                myfile.write(str(conditions))
                myfile.write(',')
                myfile.write(str(rain))
                myfile.write(',')
                myfile.write(str(snow))
                myfile.write(',') 

2 个答案:

答案 0 :(得分:1)

使用这样的索引(j)很奇怪,如果你不想写出来,为什么要解析数据 - 为什么不呢:

for obs in parsed_json['history']['observations']:
    if obs['rain']: # or 'if not', depending on which you want
        hours = obs['date']['hour']
        ...
        myfile.write(...)
        ...

如果没有看到数据样本,很难知道

答案 1 :(得分:0)

这不是像使用=== vs ==这样的语法问题,是吗?尝试使用' snow'或另一个变量和/或使用调试语句来显示降雨的值。这假定CSV文件的输出语句有效。自从我上次看Python以来已经有一段时间了。您可以强制降雨为0,然后检查记录是否已添加到CSV以确保输出有效。然后回过头来确定何时/为什么下雨不是0.希望这是有用的,并激发其他想法。