###前提・実現したいこと
Raspberry piで天気予報を読み上げるというプログラムを実行したいのですがエラーがでて実行できませんでした。
リンク内容
上記のリンク先にあった通りプログラムを実行しました。
urllib2についてエラーが出たので以下のプログラムに書き換えています。
try: import urllib.request as urllib2 except ImportError: import urllib2
書き換えたうえでプログラムを実行したところ、同じエラーが発生しました。
そこでベストアンサーに選ばれている方のプログラムを入力したところ、別のエラーが発生し困ったため質問させていただきました。
###発生している問題・エラーメッセージ
jsay 8月21日、12時21分48秒 Traceback (most recent call last): File "tenki4", line 65, in <module> main() File "tenki4", line 16, in main say_weather() File "tenki4", line 33, in say_weather obj = json.loads( unicode(r.read()) ) NameError: name 'unicode' is not defined
###該当のソースコード
#!/usr/bin/env python # -*- conding:utf-8 -*- import shlex import subprocess from datetime import datetime try: import urllib.request as urllib2 except ImportError: import urllib2 import json CMD_SAY = 'jsay' def main(): say_datetime() say_weather() return def say_datetime(): d = datetime.now() text = '%s月%s日、%s時%s分%s秒' % (d.month, d.day, d.hour, d.minute, d.second) text = CMD_SAY + ' ' + text print(text) proc = subprocess.Popen(shlex.split(text)) proc.communicate() return def say_weather(): city = '130010'; # Tokyo 他の地域の方は、番号を変えてください。 json_url = 'http://weather.livedoor.com/forecast/webservice/json/v1' #API URL weather_text = u'%sの天気は%sです。' temperature_text = u'%sの予想最高気温、%s度、予想最低気温、%s度です。' try: r = urllib2.urlopen('%s?city=%s' % (json_url, city) ) jsonStr = unicode(r.read()) print(jsonStr) # 確認表示 obj = json.loads( jsonStr ) print(obj) # 確認表示 title = obj['title'] forecasts = obj['forecasts'] # TODAY cast = forecasts[0] temperature = cast['temperature'] today_w_txt = weather_text % (cast['dateLabel'], cast['telop']) # 最高、最低気温を取得。データが存在しない場合もある temp_max = "" temp_min = "" if temperature['max'] is not None: temp_max = temperature['max']['celsius'] if temperature['min'] is not None: temp_max = temperature['min']['celsius'] today_t_txt = temperature_text % (cast['dateLabel'], temp_max, temp_min) # TOMMOROW cast = forecasts[1] temperature = cast['temperature'] tommorow_w_txt = weather_text % (cast['dateLabel'], cast['telop']) # SAY weather_str = title + ' ' + today_w_txt + ' ' + today_t_txt + ' ' + tommorow_w_txt weather_str = weather_str.encode('utf-8') text = '''%s '%s' ''' % (CMD_SAY, weather_str) print(text) proc = subprocess.Popen(shlex.split(text)) proc.communicate() finally: r.close() return ### Execute if __name__ == "__main__": main()
###試したこと
「name 'unicode' is not defined」について様々なサイトで検索してみましたが、回答を得ることができませんでした。初心者であまり詳しくないです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/05 02:32 編集
2017/09/05 07:12
2017/09/06 01:07