使用IF语句写入文件
我正在使用Weather Underground的API来把历史天气数据写入一个csv文件。我的Python程序运行得很好,没有任何问题。不过,我想加一个条件语句,让我的程序只记录包含下雨的天气观察数据。也就是说,如果在观察点j时底特律下雨,就记录下这个小时的天气情况、下雨、下雪和温度(华氏)。
下面是程序的最后一部分。“for j in range”是用来遍历某一天的天气观察数据。“rain”是一个二进制值,表示是否下雨。
再次强调,程序的其他部分都运行得很好。我唯一做的改动就是加了“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
这不是语法问题,比如用 === 和 == 的区别,对吧?你可以试试用'snow'或者其他变量,或者加一个调试语句来显示rain的值。这是基于你输出到CSV文件的语句是有效的。距离我上次看Python已经有一段时间了。你可以把rain强制设为0,然后检查记录是否被添加到CSV中,以确保输出是正常的。然后再回过头来找出rain为什么不是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(...)
...
如果没有看到数据的样本,就很难判断是否有什么东西应该放进myfile
里。