バイナリーファイルをバイト型から文字列に変換したい
pythonでwith open()を使ってバイナリーファイルを読み込んで、文字列に変換したいです。
その後正規表現を使い必要な物を抽出して、print文で出力をしたいと思っています。
発生している問題・エラーメッセージ
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa4 in position 10: invalid start byte
該当のソースコード
python
1path1='geo_coordinates_mappingbased_en.ttl.bz2' 2with open(path1,"rb") as f1: 3 4 lines=f1.readlines() 5 for line in lines: 6 l=line.decode("utf-8") 7 print(l) 8
試したこと
path1のバイナリファイルをlinuxコマンド:lv で文字列として読むことはできます。
path1='geo_coordinates_mappingbased_en.ttl.bz2' with open(path1,"rb") as f1: lines=f1.readlines() for line in lines: print(line) 出力結果 b'\xb2\x0c \xa4\x10\xa8 !\n' b'\xa4\x08T \x98a`\xc3\x0c\x13)\x81\xa9\x95\x06\x8b*\xdeR\xad\x94\xaa\xae"2\xd2I\xab+)J\xb5\xff\x8aUuZk@4\xa8`\xab\x05\x83\x0b\x05\x80\xc3\x0c\x18}\xe6\x95\\x03[\xd5*\xba\xb4\xab*V\x94\xa8@T!\x08B\x14\x84*\x14\x82\xa1HB\x14\x85\x96,\x82\xa0\x82\xaa\x08!\x84\xb0\xc3\x0c0\xc0\xbf\xc5ET\xc0i\x8cD\x86\x10\xaaYPB\x08@B\x0b\x19-\x18\xcc\xcc\x16\x16\x10\xfeZ*\xa6\r\x0c\n' b'\xa5P\x88-\xb3UI&\xb6T\xa8aeX\x81P\x91\x12H!\x02\xa1\x0c0\xc3\n'
そのまま読み込むとこのようになります。
初投稿でありpythonに不慣れで至らない点がございますが、どうかよろしくおねがします。
補足情報(FW/ツールのバージョンなど)
python3,mac
回答1件
あなたの回答
tips
プレビュー