【问题标题】:Write to file using IF statement使用 IF 语句写入文件
【发布时间】:2014-06-07 15:47:48
【问题描述】:

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

下面是程序的最后一部分。 “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(',') 

【问题讨论】:

  • 为什么不if not rain:?你有没有检查过一些数据应该被写出吗?
  • 我希望“rain == 0”表示“没有下雨”。你试过“雨!= 0”吗?
  • print rain 的值以确定您应该检查的内容——也许它是一个空字符串或其他什么。
  • 在 if 之前尝试“print type(rain), rain”。你可能会发现 rain 是一个字符串,而不是一个 int,所以比较不起作用。
  • 是的,我试过rain == “0” ...但没有解决。 rain == 0 确实意味着没有下雨,这就是我想要的。

标签: python csv if-statement for-loop


【解决方案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结束。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      相关资源
      最近更新 更多