質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

16248閲覧

pythonの倒置プログラムでマルチバイト文字を扱うにはどうすればいいですか

na2kaze

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2016/02/12 05:59

pythonにてhtmlファイルを読み込み、<p>タグを<t>タグに倒置するプログラムを書きたいのですが、エラーを履いてしまいます。マルチバイト文字を扱えるようにするにはどうすればいいでしょうか。

># coding:utf-8 if __name__ == '__main__': f = open("./app.html","r+") datal = f.read() print (datal) #倒置 dst1 = datal.replace("<p>","<t>") dst2 = dst1.replace("</p>","</t>") print (dst2) #書き込み c = open("./app.html","a") c.write(dst2) f.close() c.close()
Traceback (most recent call last): File "C:\Users\username\Desktop\倒置 - コピー.py", line 7, in <module> datal = f.read() UnicodeDecodeError: 'cp932' codec can't decode byte 0xef in position 0: illegal multibyte sequence コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

openは、encodingが指定されていないとデフォルトのエンコーディングを使います。
お使いになっているのはWindowsのようですね。
エラーメッセージを見ると、デフォルトのエンコーディングはcp932(WindowsのSJIS)のようですが、読込み対象のファイルのエンコーディングがcp932ではないため、エラーになっています。

app.htmlのエンコーディング(utf-8, euc_jp等)は分かりますか?
openの際にencodingを指定してみてください。

f = open("./app.html","r+", encding='utf-8')

使っているAPIのドキュメントとエラーメッセージの内容をよく読みましょう。

(参考)
openの仕様:
http://docs.python.jp/3.3/library/functions.html#open

Pythonで使える標準エンコーディング:
http://docs.python.jp/3.3/library/codecs.html#module-codecs

投稿2016/02/12 14:21

wata

総合スコア70

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問