質問編集履歴

5 プログラム変更

usuallyi

usuallyi score 36

2017/01/29 02:46  投稿

配列から関数に複数の引数を送る方法
配列から、関数に複数の引数を送るやり方が分からず困っています。
また、
以下のエラーが発生してしまいます。
ValueError: could not convert string to float: max_wind_direction
以下がプログラム一部抜粋です。
```python
# coding: utf-8
import codecs
import math
class JMACSVReader(object):
 def __init__(self, filename,format,encoding='shift_jisx0213', header_ofs=6):
   self.format = format
   self._istream = codecs.open(filename, 'r', encoding)
   for i in range(header_ofs):
     self._istream.readline() # ヘッダを読み飛ばす
 def _parse_line(self,line):
   record = {}
   for k,v in zip(self.format, line.split(',')):
     if k is not None:
       record[k] = v
   return record
 def __iter__(self):
   for line in self._istream:
     yield(self._parse_line(line))
weather_codes = [
 (u'薄', 'Usu'),(u'大', 'Oo'),
 (u'暴風雨', 'Bofu'), (u'快晴', 'Kaisei'),
 (u'雨', 'Ame'),(u'晴', 'Hare'),
 (u'雪', 'Yuki'), (u'曇', 'Kumori'),
 (u'みぞれ', 'Mizore'), (u'ひょう', 'Hyo'),
 (u'霧', 'Kiri'),
]
sincos_codes = [
 (u'北','0'),(u'東','90'),
 (u'南','180'),(u'西','270'),
 (u'北北東','23'),(u'北東','45'),
 (u'東北東','68'),(u'東南東','113'),
 (u'南東','135'),(u'南南東','158'),
 (u'南南西','203'),(u'南西','225'),
 (u'西南西','248'),(u'西北西','293'),
 (u'北西','315'),(u'北北西','338'),
]
wind_direction_codes = [
 (u'北', 'N'),(u'東','S'),
 (u'南','S'),(u'西','N'),
 (u'北北東','N'),(u'北東','N'),
 (u'東北東','N'),(u'東南東','S'),
 (u'南東','S'),(u'南南東','S'),
 (u'南南西','S'),(u'南西','S'),
 (u'西南西','E'),(u'西北西','N'),
 (u'北西','N'),(u'北北西','N'),
]
def ame(weather):
 yuki_length=weather.find(u'雪')
 ame_length=weather.find(u'雨')
 if(yuki_length==-1):
   weather= u'雨'
   return weather
 if(ame_length<yuki_length):
   weather= u'雨'
   return weather
 else:
   weather= u'雪'
   return weather
def ame_yuki(weather):
 if u'雨' in weather:
   weather=ame(weather)
   return weather
 elif u'雪' in weather:
   weather= u'雪'
   return weather
 elif u'みぞれ' in weather:
   weather= u'雪'
   return weather
 elif u'ひょう' in weather:
   weather= u'雪'
   return weather
 else:
  return weather
def wind_direction(wind):
 for k,v in wind_direction_codes:
  wind = re.sub('^%s$'%k,v,wind.strip())
 return wind
def exchange(rad):
def exchange_cos(rad):
 test=float(rad)
 test=math.radians(test)
 an=math.sin(test)
 return an
 hi=math.cos(test)
 return hi
def wind_exchange_sin(wind_sd,wind_s):
def wind_exchange_cos(wind_s,wind):
 for k,v in sincos_codes:
  wind = re.sub('^%s$'%k,v,wind.strip())
 wind=exchange_cos(wind)
 #test=math.radians(wind)
 #hi=math.sin(test)
 wind=wind_s*wind
 #print str(wind).encode('utf-8')
 return str(wind).encode('utf-8')
def exchange_sin(rad):  
 test=float(rad)  
 test=math.radians(test)  
 hi=math.sin(test)  
 return hi  
 
def wind_exchange_sin(wind_s,wind):  
 for k,v in sincos_codes:
  wind = re.sub('^%s$'%k,v,wind_s.strip())
 wind_1 = wind
 #print wind_1
 wind_1=exchange(wind_1)
 wind_1=wind_sd*wind_1
 #print str(wind_1).encode('utf-8')
  wind = re.sub('^%s$'%k,v,wind.strip())
 wind=exchange_sin(wind)
 #test=math.radians(wind)
 #hi=math.sin(test)
 wind=wind_s*wind
 #print str(wind).encode('utf-8')
 return str(wind).encode('utf-8')
def encode_weather(weather):
 # 日本語があると何かと面倒なのでコード値にしてしまう。彦根市は上記のルールだけで大丈夫だったが、他の地域や期間に対応するにはパターンを増やす必要があるかも。  
 # 「晴れ一時雨後曇り」とか後ろについてくるやつは面倒くさいので除去する。  
   
weather=ame_yuki(weather)
wcode = re.sub( u'(一時|時々|後|、).*','',weather.strip())
for k,v in weather_codes:
 wcode = wcode.replace(k,v)
return wcode
def format_file_main(filename, in_format, out_format):
 jmacsv = JMACSVReader(filename, in_format)
 for record in jmacsv:
   line = []
   for of in out_format:
     if isinstance(of,tuple):
       line.append(of[1](record[of[0]]))
     else:
       line.append(record[of])
   print(u'\t'.join(line).encode('utf-8'))
if __name__=='__main__':
 # usage: jmaformat.py data.csv
 import sys
 import re
 in_format = [
   'date',
   'temp_max',None,None,
   'temp_min',None,None,
   'weather',None,None,
   'total_rainfall',None,None,None,
   'avg_windspeed',None,None,
   'avg_atom',None,None,
   'avg_humid',None,None,
   'avg_temp',None,None,
   'hours_of_sunshine',None,None,None,
   'highest_snow_depth',None,None,None,
   'max_windspeed',None,'max_wind_direction',None,None,
   'max_instantaneous_windspeed',None,'max_instantaneous_wind_direction',None,None,None,None,None,
   'avg_vapor_pressure',None,None,
   'min_atom',None,None,
   'avg_humid',None,None,
   'min_humid',None,None,None,
   '10min_avg_cloudcover',None,None,
   'total_snow_depth',None,None,None,
   'total_solar_insolation',None,None,
   '1hour_max_rainfall',None,None,None,
 ]
 out_format = ['date','temp_max','temp_min','total_rainfall','avg_windspeed','avg_atom','avg_humid','avg_temp', 'hours_of_sunshine','highest_snow_depth',(wind_exchange_sin(max_windspeed,max_wind_direction)),('max_wind_direction', wind_direction),'max_instantaneous_windspeed',('max_instantaneous_wind_direction',wind_direction),'avg_vapor_pressure','min_atom','avg_humid','min_humid','10min_avg_cloudcover','total_snow_depth','total_solar_insolation','1hour_max_rainfall',('weather', encode_weather ),]  
 out_format = ['date','temp_max','temp_min','total_rainfall',  
 'avg_windspeed','avg_atom','avg_humid','avg_temp', 'hours_of_sunshine',  
 'highest_snow_depth','max_windspeed',  
 (wind_exchange_sin(max_windspeed,max_wind_direction)),(wind_exchange_cos(max_windspeed,max_wind_direction)),  
 'max_instantaneous_windspeed',('max_instantaneous_wind_direction',wind_exchange_sin),('max_instantaneous_wind_direction',wind_exchange_cos),  
 'avg_vapor_pressure','min_atom','avg_humid','min_humid','10min_avg_cloudcover',  
 'total_snow_depth','total_solar_insolation','1hour_max_rainfall',('weather', encode_weather ),]  
 
 
   
 for file in sys.argv[1:]:
   format_file_main(file,in_format,out_format)
 
```
  • Python

    15387 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Python 2.7

    1572 questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

4 修正

usuallyi

usuallyi score 36

2017/01/29 01:02  投稿

配列から関数に複数の引数を送る方法
配列から、関数に複数の引数を送るやり方が分からず困っています。
また、
以下のエラーが発生してしまいます。
ValueError: could not convert string to float: max_wind_direction
以下がプログラム一部抜粋です。
```python
# coding: utf-8
import codecs
import math
class JMACSVReader(object):
 def __init__(self, filename,format,encoding='shift_jisx0213', header_ofs=6):
   self.format = format
   self._istream = codecs.open(filename, 'r', encoding)
   for i in range(header_ofs):
     self._istream.readline() # ヘッダを読み飛ばす
 def _parse_line(self,line):
   record = {}
   for k,v in zip(self.format, line.split(',')):
     if k is not None:
       record[k] = v
   return record
 def __iter__(self):
   for line in self._istream:
     yield(self._parse_line(line))
weather_codes = [
 (u'薄', 'Usu'),(u'大', 'Oo'),
 (u'暴風雨', 'Bofu'), (u'快晴', 'Kaisei'),
 (u'雨', 'Ame'),(u'晴', 'Hare'),
 (u'雪', 'Yuki'), (u'曇', 'Kumori'),
 (u'みぞれ', 'Mizore'), (u'ひょう', 'Hyo'),
 (u'霧', 'Kiri'),
]
sincos_codes = [
 (u'北','0'),(u'東','90'),
 (u'南','180'),(u'西','270'),
 (u'北北東','23'),(u'北東','45'),
 (u'東北東','68'),(u'東南東','113'),
 (u'南東','135'),(u'南南東','158'),
 (u'南南西','203'),(u'南西','225'),
 (u'西南西','248'),(u'西北西','293'),
 (u'北西','315'),(u'北北西','338'),
]
wind_direction_codes = [
 (u'北', 'N'),(u'東','S'),
 (u'南','S'),(u'西','N'),
 (u'北北東','N'),(u'北東','N'),
 (u'東北東','N'),(u'東南東','S'),
 (u'南東','S'),(u'南南東','S'),
 (u'南南西','S'),(u'南西','S'),
 (u'西南西','E'),(u'西北西','N'),
 (u'北西','N'),(u'北北西','N'),
]
def ame(weather):
 yuki_length=weather.find(u'雪')
 ame_length=weather.find(u'雨')
 if(yuki_length==-1):
   weather= u'雨'
   return weather
 if(ame_length<yuki_length):
   weather= u'雨'
   return weather
 else:
   weather= u'雪'
   return weather
def ame_yuki(weather):
 if u'雨' in weather:
   weather=ame(weather)
   return weather
 elif u'雪' in weather:
   weather= u'雪'
   return weather
 elif u'みぞれ' in weather:
   weather= u'雪'
   return weather
 elif u'ひょう' in weather:
   weather= u'雪'
   return weather
 else:
  return weather
def wind_direction(wind):
 for k,v in wind_direction_codes:
  wind = re.sub('^%s$'%k,v,wind.strip())
 return wind
def exchange(rad):
 test=float(rad)
 test=math.radians(test)
 an=math.sin(test)
 return an
def wind_exchange_sin(wind_sd,wind_s):
 for k,v in sincos_codes:
  wind = re.sub('^%s$'%k,v,wind_s.strip())
 wind_1 = wind
 #print wind_1
 wind_1=exchange(wind_1)
 wind_1=wind_sd*wind_1
 #print str(wind_1).encode('utf-8')
 return str(wind).encode('utf-8')
def encode_weather(weather):
weather=ame_yuki(weather)
wcode = re.sub( u'(一時|時々|後|、).*','',weather.strip())
for k,v in weather_codes:
 wcode = wcode.replace(k,v)
return wcode
def format_file_main(filename, in_format, out_format):
 jmacsv = JMACSVReader(filename, in_format)
 for record in jmacsv:
   line = []
   for of in out_format:
     if isinstance(of,tuple):
       line.append(of[1](record[of[0]]))
     else:
       line.append(record[of])
   print(u'\t'.join(line).encode('utf-8'))
if __name__=='__main__':
 # usage: jmaformat.py data.csv
 import sys
 import re
 in_format = [
   'date',
   'temp_max',None,None,
   'temp_min',None,None,
   'weather',None,None,
   'total_rainfall',None,None,None,
   'avg_windspeed',None,None,
   'avg_atom',None,None,
   'avg_humid',None,None,
   'avg_temp',None,None,
   'hours_of_sunshine',None,None,None,
   'highest_snow_depth',None,None,None,
   'max_windspeed',None,'max_wind_direction',None,None,
   'max_instantaneous_windspeed',None,'max_instantaneous_wind_direction',None,None,None,None,None,
   'avg_vapor_pressure',None,None,
   'min_atom',None,None,
   'avg_humid',None,None,
   'min_humid',None,None,None,
   '10min_avg_cloudcover',None,None,
   'total_snow_depth',None,None,None,
   'total_solar_insolation',None,None,
   '1hour_max_rainfall',None,None,None,
 ]
 out_format = ['date','temp_max','temp_min','total_rainfall','avg_windspeed','avg_atom','avg_humid','avg_temp', 'hours_of_sunshine','highest_snow_depth',(wind_exchange_sin('max_windspeed','max_wind_direction')),('max_wind_direction', wind_direction),'max_instantaneous_windspeed',('max_instantaneous_wind_direction',wind_direction),'avg_vapor_pressure','min_atom','avg_humid','min_humid','10min_avg_cloudcover','total_snow_depth','total_solar_insolation','1hour_max_rainfall',('weather', encode_weather ),]
 out_format = ['date','temp_max','temp_min','total_rainfall','avg_windspeed','avg_atom','avg_humid','avg_temp', 'hours_of_sunshine','highest_snow_depth',(wind_exchange_sin(max_windspeed,max_wind_direction)),('max_wind_direction', wind_direction),'max_instantaneous_windspeed',('max_instantaneous_wind_direction',wind_direction),'avg_vapor_pressure','min_atom','avg_humid','min_humid','10min_avg_cloudcover','total_snow_depth','total_solar_insolation','1hour_max_rainfall',('weather', encode_weather ),]
 for file in sys.argv[1:]:
   format_file_main(file,in_format,out_format)
```
  • Python

    15387 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Python 2.7

    1572 questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

3 プログラム修正

usuallyi

usuallyi score 36

2017/01/29 00:52  投稿

配列から関数に複数の引数を送る方法
配列から、関数に複数の引数を送るやり方が分からず困っています。
また、
以下のエラーが発生してしまいます。
ValueError: could not convert string to float: max_wind_direction
以下がプログラム一部抜粋です。
```python
# coding: utf-8
import codecs
import math
class JMACSVReader(object):
 def __init__(self, filename,format,encoding='shift_jisx0213', header_ofs=6):
   self.format = format
   self._istream = codecs.open(filename, 'r', encoding)
   for i in range(header_ofs):
     self._istream.readline() # ヘッダを読み飛ばす
 def _parse_line(self,line):
   record = {}
   for k,v in zip(self.format, line.split(',')):
     if k is not None:
       record[k] = v
   return record
 def __iter__(self):
   for line in self._istream:
     yield(self._parse_line(line))
weather_codes = [
 (u'薄', 'Usu'),(u'大', 'Oo'),
 (u'暴風雨', 'Bofu'), (u'快晴', 'Kaisei'),
 (u'雨', 'Ame'),(u'晴', 'Hare'),
 (u'雪', 'Yuki'), (u'曇', 'Kumori'),
 (u'みぞれ', 'Mizore'), (u'ひょう', 'Hyo'),
 (u'霧', 'Kiri'),
]
sincos_codes = [
 (u'北','0'),(u'東','90'),
 (u'南','180'),(u'西','270'),
 (u'北北東','23'),(u'北東','45'),
 (u'東北東','68'),(u'東南東','113'),
 (u'南東','135'),(u'南南東','158'),
 (u'南南西','203'),(u'南西','225'),
 (u'西南西','248'),(u'西北西','293'),
 (u'北西','315'),(u'北北西','338'),
]
wind_direction_codes = [
 (u'北', 'N'),(u'東','S'),
 (u'南','S'),(u'西','N'),
 (u'北北東','N'),(u'北東','N'),
 (u'東北東','N'),(u'東南東','S'),
 (u'南東','S'),(u'南南東','S'),
 (u'南南西','S'),(u'南西','S'),
 (u'西南西','E'),(u'西北西','N'),
 (u'北西','N'),(u'北北西','N'),
]
def ame(weather):
 yuki_length=weather.find(u'雪')
 ame_length=weather.find(u'雨')
 if(yuki_length==-1):
   weather= u'雨'
   return weather
 if(ame_length<yuki_length):
   weather= u'雨'
   return weather
 else:
   weather= u'雪'
   return weather
def ame_yuki(weather):
 if u'雨' in weather:
   weather=ame(weather)
   return weather
 elif u'雪' in weather:
   weather= u'雪'
   return weather
 elif u'みぞれ' in weather:
   weather= u'雪'
   return weather
 elif u'ひょう' in weather:
   weather= u'雪'
   return weather
 else:
  return weather
def wind_direction(wind):
 for k,v in wind_direction_codes:
  wind = re.sub('^%s$'%k,v,wind.strip())
 return wind
def exchange(rad):
 test=float(rad)
 test=math.radians(test)
 an=math.sin(test)
 return an
def wind_exchange_sin(wind_sd,wind_s):
 for k,v in sincos_codes:
  wind = re.sub('^%s$'%k,v,wind_s.strip())
 wind_1 = wind
 print wind_1
 #wind_1=exchange(wind_1)
 #wind_1=wind_sd*wind_1
 #print wind_1
 wind_1=exchange(wind_1)
 wind_1=wind_sd*wind_1
 #print str(wind_1).encode('utf-8')
 return str(wind).encode('utf-8')
def encode_weather(weather):
weather=ame_yuki(weather)
wcode = re.sub( u'(一時|時々|後|、).*','',weather.strip())
for k,v in weather_codes:
 wcode = wcode.replace(k,v)
return wcode
def format_file_main(filename, in_format, out_format):
 jmacsv = JMACSVReader(filename, in_format)
 for record in jmacsv:
   line = []
   for of in out_format:
     if isinstance(of,tuple):
       line.append(of[1](record[of[0]]))
     else:
       line.append(record[of])
   print(u'\t'.join(line).encode('utf-8'))
if __name__=='__main__':
 # usage: jmaformat.py data.csv
 import sys
 import re
 in_format = [
   'date',
   'temp_max',None,None,
   'temp_min',None,None,
   'weather',None,None,
   'total_rainfall',None,None,None,
   'avg_windspeed',None,None,
   'avg_atom',None,None,
   'avg_humid',None,None,
   'avg_temp',None,None,
   'hours_of_sunshine',None,None,None,
   'highest_snow_depth',None,None,None,
   'max_windspeed',None,'max_wind_direction',None,None,
   'max_instantaneous_windspeed',None,'max_instantaneous_wind_direction',None,None,None,None,None,
   'avg_vapor_pressure',None,None,
   'min_atom',None,None,
   'avg_humid',None,None,
   'min_humid',None,None,None,
   '10min_avg_cloudcover',None,None,
   'total_snow_depth',None,None,None,
   'total_solar_insolation',None,None,
   '1hour_max_rainfall',None,None,None,
 ]
 out_format = ['date','temp_max','temp_min','total_rainfall','avg_windspeed','avg_atom','avg_humid','avg_temp', 'hours_of_sunshine','highest_snow_depth',(wind_exchange_sin('max_windspeed','max_wind_direction')),('max_wind_direction', wind_direction),'max_instantaneous_windspeed',('max_instantaneous_wind_direction',wind_direction),'avg_vapor_pressure','min_atom','avg_humid','min_humid','10min_avg_cloudcover','total_snow_depth','total_solar_insolation','1hour_max_rainfall',('weather', encode_weather ),]
 for file in sys.argv[1:]:
   format_file_main(file,in_format,out_format)
```
  • Python

    15387 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Python 2.7

    1572 questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

2 プログラム追加

usuallyi

usuallyi score 36

2017/01/29 00:49  投稿

配列から関数に複数の引数を送る方法
配列から、関数に複数の引数を送るやり方が分からず困っています。
また、
以下のエラーが発生してしまいます。
ValueError: could not convert string to float: max_wind_direction
以下がプログラム一部抜粋です。
```python
# coding: utf-8  
import codecs  
import math
 
class JMACSVReader(object):  
 def __init__(self, filename,format,encoding='shift_jisx0213', header_ofs=6):  
   self.format = format  
   self._istream = codecs.open(filename, 'r', encoding)  
   for i in range(header_ofs):  
     self._istream.readline() # ヘッダを読み飛ばす  
 
 def _parse_line(self,line):  
   record = {}  
   for k,v in zip(self.format, line.split(',')):  
     if k is not None:  
       record[k] = v  
   return record  
 
 def __iter__(self):  
   for line in self._istream:  
     yield(self._parse_line(line))  
 
weather_codes = [  
 (u'薄', 'Usu'),(u'大', 'Oo'),  
 (u'暴風雨', 'Bofu'), (u'快晴', 'Kaisei'),  
 (u'雨', 'Ame'),(u'晴', 'Hare'),  
 (u'雪', 'Yuki'), (u'曇', 'Kumori'),  
 (u'みぞれ', 'Mizore'), (u'ひょう', 'Hyo'),  
 (u'霧', 'Kiri'),  
]  
 
sincos_codes = [
 (u'北','0'),(u'東','90'),
 (u'南','180'),(u'西','270'),
 (u'北北東','23'),(u'北東','45'),
 (u'東北東','68'),(u'東南東','113'),
 (u'南東','135'),(u'南南東','158'),
 (u'南南西','203'),(u'南西','225'),
 (u'西南西','248'),(u'西北西','293'),
 (u'北西','315'),(u'北北西','338'),
]
wind_direction_codes = [  
 (u'北', 'N'),(u'東','S'),  
 (u'南','S'),(u'西','N'),  
 (u'北北東','N'),(u'北東','N'),  
 (u'東北東','N'),(u'東南東','S'),  
 (u'南東','S'),(u'南南東','S'),  
 (u'南南西','S'),(u'南西','S'),  
 (u'西南西','E'),(u'西北西','N'),  
 (u'北西','N'),(u'北北西','N'),  
]  
 
def ame(weather):  
 yuki_length=weather.find(u'雪')  
 ame_length=weather.find(u'雨')  
 if(yuki_length==-1):  
   weather= u'雨'  
   return weather  
 if(ame_length<yuki_length):  
   weather= u'雨'  
   return weather  
 else:  
   weather= u'雪'  
   return weather  
 
def ame_yuki(weather):  
 if u'雨' in weather:  
   weather=ame(weather)  
   return weather  
 elif u'雪' in weather:  
   weather= u'雪'  
   return weather  
 elif u'みぞれ' in weather:  
   weather= u'雪'  
   return weather  
 elif u'ひょう' in weather:  
   weather= u'雪'  
   return weather  
 else:  
  return weather  
 
 
def wind_direction(wind):  
 
 for k,v in wind_direction_codes:  
  wind = re.sub('^%s$'%k,v,wind.strip())  
 return wind  
 
def exchange(rad):
 test=float(rad)
 test=math.radians(test)
 hi=math.sin(test)
 return hi
 an=math.sin(test)
 return an
def wind_exchange_sin(wind_sd,wind_s):
 for k,v in sincos_codes:
  wind = re.sub('^%s$'%k,v,wind_s.strip())
 wind=exchange(wind)
 #test=math.radians(wind)
 #hi=math.sin(test)
 wind=wind_sd*wind
 print str(wind).encode('utf-8')
 wind_1 = wind
 print wind_1
 #wind_1=exchange(wind_1)
 #wind_1=wind_sd*wind_1
 #print str(wind_1).encode('utf-8')
 return str(wind).encode('utf-8')
out_format =['date',(wind_exchange_sin('max_windspeed','max_wind_direction')),]
def encode_weather(weather):
weather=ame_yuki(weather)
wcode = re.sub( u'(一時|時々|後|、).*','',weather.strip())
for k,v in weather_codes:
 wcode = wcode.replace(k,v)
return wcode
def format_file_main(filename, in_format, out_format):  
 jmacsv = JMACSVReader(filename, in_format)  
 for record in jmacsv:  
   line = []  
   for of in out_format:  
     if isinstance(of,tuple):  
       line.append(of[1](record[of[0]]))  
     else:  
       line.append(record[of])  
   print(u'\t'.join(line).encode('utf-8'))  
 
if __name__=='__main__':  
 # usage: jmaformat.py data.csv  
 import sys  
 import re  
 in_format = [  
   'date',  
   'temp_max',None,None,  
   'temp_min',None,None,  
   'weather',None,None,  
   'total_rainfall',None,None,None,  
   'avg_windspeed',None,None,  
   'avg_atom',None,None,  
   'avg_humid',None,None,  
   'avg_temp',None,None,  
   'hours_of_sunshine',None,None,None,  
   'highest_snow_depth',None,None,None,  
   'max_windspeed',None,'max_wind_direction',None,None,  
   'max_instantaneous_windspeed',None,'max_instantaneous_wind_direction',None,None,None,None,None,  
   'avg_vapor_pressure',None,None,  
   'min_atom',None,None,  
   'avg_humid',None,None,  
   'min_humid',None,None,None,  
   '10min_avg_cloudcover',None,None,  
   'total_snow_depth',None,None,None,  
   'total_solar_insolation',None,None,  
   '1hour_max_rainfall',None,None,None,  
 ]  
 
 out_format = ['date','temp_max','temp_min','total_rainfall','avg_windspeed','avg_atom','avg_humid','avg_temp', 'hours_of_sunshine','highest_snow_depth',(wind_exchange_sin('max_windspeed','max_wind_direction')),('max_wind_direction', wind_direction),'max_instantaneous_windspeed',('max_instantaneous_wind_direction',wind_direction),'avg_vapor_pressure','min_atom','avg_humid','min_humid','10min_avg_cloudcover','total_snow_depth','total_solar_insolation','1hour_max_rainfall',('weather', encode_weather ),]  
 
 for file in sys.argv[1:]:  
   format_file_main(file,in_format,out_format)  
```
  • Python

    15387 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Python 2.7

    1572 questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

1 タグ追加

usuallyi

usuallyi score 36

2017/01/29 00:24  投稿

配列から関数に複数の引数を送る方法
配列から、関数に複数の引数を送るやり方が分からず困っています。
また、
以下のエラーが発生してしまいます。
ValueError: could not convert string to float: max_wind_direction
以下がプログラム一部抜粋です。
```python
import math
sincos_codes = [
(u'北','0'),(u'東','90'),
(u'南','180'),(u'西','270'),
(u'北北東','23'),(u'北東','45'),
(u'東北東','68'),(u'東南東','113'),
(u'南東','135'),(u'南南東','158'),
(u'南南西','203'),(u'南西','225'),
(u'西南西','248'),(u'西北西','293'),
(u'北西','315'),(u'北北西','338'),
]
def exchange(rad):
test=float(rad)
test=math.radians(test)
hi=math.sin(test)
return hi
def wind_exchange_sin(wind_sd,wind_s):
for k,v in sincos_codes:
wind = re.sub('^%s$'%k,v,wind_s.strip())
wind=exchange(wind)
#test=math.radians(wind)
#hi=math.sin(test)
wind=wind_sd*wind
print str(wind).encode('utf-8')
return str(wind).encode('utf-8')
out_format =['date',(wind_exchange_sin('max_windspeed','max_wind_direction')),]
```
  • Python 2.7

    1572 questions

    Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

  • Python

    15387 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る