Pythonを勉強中の初心者です。初めてテラテイルで質問させていただきます。
現在Python2.7で天気予報APIのYahoo weatherから天気予報を取得し、
Tweetするプログラムを書いています。
pywapiライブラリを利用しています。
http://99blues.dyndns.org/blog/2011/01/lets_get_weather_6/
取得した予報は英語なため、これを日本語へ置換したいと考えています。
例えば、May→5月、AM Clouds/PM Sun→曇のち晴れ、という感じに置換したいです。
ある程度splitを使って例えば、取得したdateリストの「8 May 2015」をsplitで区切ったリストにして、Mayのみをif文にかけてMay→5月に置換する方法も思いつきましたが、ステップ数がすごいことになると思い、それが一番いい方法だとは思えず。。。もっとスマートに書けないだろうかと悩んでいます。
こういった文字列置換で良い方法を教えて下さい。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
日付の変換だけですが、
lang
1import datetime 2print datetime.datetime.strptime("8 May 2015","%d %b %Y").strftime("%m月%d日")
投稿2015/05/07 16:45
総合スコア84505
0
あらかじめ決められた対応表に基づいた置換処理ならば、ルックアップテーブル(LookUp Table)という実装方法がシンプルです。
lang
1# -*- coding: utf-8 -*- 2MONTH_LUT = { 3 'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, 4 # ... 5} 6 7def translate(date): 8 d, m, y = date.split(' ') 9 m = MONTH_LUT[m] 10 return '{}年{}月{}日'.format(y, m, d) 11 12jdate = translate('8 May 2015') 13print jdate
投稿2015/05/07 15:40
総合スコア6191
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
英語を日本語へ置換するという質問からは外れますが、
pywapiを使うことに特にこだわらなければ、
予報が日本語で提供されているAPIを使うという手もあります。
コード
lang
1# -*- coding: utf-8 -*- 2import requests 3 4url = 'http://weather.livedoor.com/forecast/webservice/json/v1' 5location_id = 130010 # 東京 6response = requests.get(url, params={"city": location_id}) 7weather_data = response.json() 8 9for forecast in weather_data['forecasts']: 10 print u"{} ({}) {}".format(forecast["dateLabel"], 11 forecast["date"], 12 forecast["telop"])
実行結果
lang
1$ python weather.py 2今日 (2015-05-09) 曇時々雨 3明日 (2015-05-10) 晴時々曇 4明後日 (2015-05-11) 晴時々曇
参考
投稿2015/05/09 09:17
総合スコア24
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/09 16:20
0
日付の変換は、strptime(), strftime()を使うotnさんの方法が良いと思います。
天気の変換は、Yahoo! Weather APIの天気は数が限られているので、
ルックアップテーブルを使うyohhoyさんの方法でできます。
lang
1# coding: utf-8 2from datetime import datetime 3 4# ルックアップテーブル 5CONDITION_TABLE = {u'30': '晴れときどきくもり', 6 u'33': '快晴'} 7 8# Yahoo! Weather APIのレスポンスの一部 9response = {'forecasts': [{'code': u'33', 10 'date': u'10 Jan 2011', 11 'high': u'5', 12 'low': u'0', 13 'text': u'Mostly Clear'}, 14 {'code': u'30', 15 'date': u'11 Jan 2011', 16 'high': u'7', 17 'low': u'2', 18 'text': u'Partly Cloudy'}]} 19 20for forecast in response['forecasts']: 21 date = datetime.strptime(forecast['date'], 22 '%d %b %Y').strftime('%Y年%m月%d日') 23 condition = CONDITION_TABLE[forecast['code']] 24 25 print '{} {}'.format(date, condition)
実行結果
lang
1$ python weather.py 22011年01月10日 快晴 32011年01月11日 晴れときどきくもり
文字列置換を勉強するのであれば、正規表現についても調べてみると良いと思います。
投稿2015/05/08 13:30
総合スコア24
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/09 03:56
2015/05/09 11:06
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/09 03:40