3つのコンマ区切りの数字を含むファイルを読んでいると仮定します。ファイルは不明なエンコーディングで保存されましたが、これまでのところ、ANSIとUTF-8を扱っています。ファイルがUTF-8にあり、値が115,113,12の1行である場合、次のようになります。
with open(file) as f:
a,b,c=map(int,f.readline().split(','))
これを投げるだろう:
invalid literal for int() with base 10: '\xef\xbb\xbf115'
最初の数字は常にこれらの'\xef \ xbb\xbf'文字でマングルされます。残りの2つの数値については、変換は正常に機能します。'\ xef \ xbb \ xbf'を''に手動で置き換えてから、int変換を実行すると、機能します。
エンコードされたファイルのタイプに対してこれを行うためのより良い方法はありますか?