

python3系で書かれた[サンプルコード](https://github.com/KatsuhiroMorishita/AMeDAS_downloader/blob/master/html_parser.py)をpython2系で実行するためにコードを書き換えようとしているのですが不明な点があります．

上のサンプルコードに`from io import open`と追加し`python html_parser.py`と実行したところ

[code]

    File "html_parser.py", line 314, in get_data
    if "１時間ごとの値" in txt or "１０分ごとの値" in txt: # 観測データの種類を判別し
    て呼び出す関数を変えている
    TypeError: 'in <string>' requires string as left operand    
    
[/code]

と表示されました．  
そこで `def get_data(lines, data=None)`の中で`if u"１時間ごとの値" in txt or u"１０分ごとの値" in
txt`のようにすべての日本語の前にuをつけて実行したところ，

[code]

    Traceback (most recent call last):
    File "html_parser.py", line 412, in <module>
      main()
    File "html_parser.py", line 399, in main
      data = get_data(lines, _date) # error occurred! 2017 12 28
    File "html_parser.py", line 315, in get_data
      data = get_data_from_past_format(lines)
    File "html_parser.py", line 166, in get_data_from_past_format
      indexes = get_column_names(lines)      # 項目名と、項目名が含まれる最後の行号
      を取得
    File "html_parser.py", line 146, in get_column_names
      index_list = [""] * len(table[0]) # まずは列の数だけ空の文字列を作る
    IndexError: list index out of range
    
[/code]

とのエラーが出ました．python3の環境とpython2の環境で出力を比べたところpython2環境下では`def
get_data_from_past_format(lines)`の返り値がなにもなく，おそらく関数内の正規表現マッチングが上手く働いていないかと思っております．どのように対応すればよいでしょうか．

実行手順は  
1\.
[サンプルコード](https://github.com/KatsuhiroMorishita/AMeDAS_downloader/blob/master/download.py)(download.py)に`from
io import open`を追加して`python download.py`を実行  
2\.
[サンプルコード](https://github.com/KatsuhiroMorishita/AMeDAS_downloader/blob/master/html_parser.py)を実行  
しています．

ちなみにpython3環境下では1,2とも動作確認済みです．

よろしくお願いいたします．


CC BY-SA 3.0
2017-12-28T14:38:05.680
40590
2018-01-25T10:56:38.770
2018-01-25T10:56:38.770
26604
26604
question
python python3 正規表現 unicode python2
python2とpython3の文字コードと正規表現