python3系で書かれたサンプルコードをpython2系で実行するためにコードを書き換えようとしているのですが不明な点があります.

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

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

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

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

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

実行手順は
1. サンプルコード(download.py)にfrom io import openを追加してpython download.pyを実行
2. サンプルコードを実行
しています.

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

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