我正在使用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(',')
答案 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.希望这是有用的,并激发其他想法。