前提
文字コードを判定してデコードするプログラムを書いています。処理速度の問題によりchardetを使いません。
utf-8でデコードできなければshift-jisで、デコードできなければ別の文字コードで、・・・と言う処理を書いているのですが、try - Except 文がどんどん入れ子になって煩雑です。
実現したいこと
try - except 文に if - elif - else のようなネストが1度で済むような書き方はありますでしょうか?また、try - exceptを使わない別の方法があれば教えてください。
該当のソースコード
Python
1with open(r"path\path\path.txt", 'rb') as f: 2 data = f.read() 3 try: 4 print(data.decode()) 5 except UnicodeDecodeError: 6 try: 7 print(data.decode('shift-jis')) 8 except UnicodeDecodeError: 9 try: 10 print(data.decode('big5')) 11 except UnicodeDecodeError: 12 try: 13 print(data.decode('GB2312')) 14 except UnicodeDecodeError: 15 try: 16 print(data.decode('cp949')) 17 except UnicodeDecodeError: 18 encoding = chardet.detect(data)['encoding'] 19 print(data.decode(encoding=encoding, errors='replace'))

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。