[解決済み] Pythonによるファイルからの読み込みとutf-8への保存
2023-03-30 11:54:30
質問
ファイルからの読み込み、文字列の処理、UTF-8ファイルへの保存で問題が発生しています。
以下はそのコードです。
try:
filehandle = open(filename,"r")
except:
print("Could not open file " + filename)
quit()
text = filehandle.read()
filehandle.close()
次に、変数テキストに何らかの処理をします。
そして
try:
writer = open(output,"w")
except:
print("Could not open file " + output)
quit()
#data = text.decode("iso 8859-15")
#writer.write(data.encode("UTF-8"))
writer.write(text)
writer.close()
これはファイルを完璧に出力しますが、私のエディタによるとiso 8859-15で出力されます。同じエディタが入力ファイル(変数filenameで)をUTF-8として認識するので、なぜこのようなことが起こるのかわかりません。私の研究の範囲では、コメントされた行は問題を解決するはずです。しかし、これらの行を使用すると、テキストがスペイン語であるため、結果のファイルには、主にチルダを持つ単語などの特殊文字でちんぷんかんぷんなものがあります。私は困っているので、どんな助けでも本当に感謝します...。
どのように解決するのですか?
プログラムの I/O 境界で、Unicode との間でテキストを処理するために
open
と
encoding
パラメータで指定します。 読み込むファイルのエンコーディングは、(できれば文書化されたものを)必ず使用してください。 デフォルトのエンコーディングはOSによって異なります(具体的には。
locale.getpreferredencoding(False)
が使われるエンコーディングです) ので、常に明示的に
encoding
パラメータを使用することをお勧めします(以下、Python 3 の構文)。
with open(filename, 'r', encoding='utf8') as f:
text = f.read()
# process Unicode text
with open(filename, 'w', encoding='utf8') as f:
f.write(text)
まだPython 2を使用している場合、またはPython 2/3との互換性を保つために
io
モジュールが実装されています。
open
を実装しており、Python 3 の
open
と同じ意味を持ち、両方のバージョンに存在します。
import io
with io.open(filename, 'r', encoding='utf8') as f:
text = f.read()
# process Unicode text
with io.open(filename, 'w', encoding='utf8') as f:
f.write(text)
関連
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] Pythonでファイル名から拡張子を抽出する
-
[解決済み] Pythonでファイルを移動するには?
-
[解決済み] UTF-8とBOMなしUTF-8の違いは何ですか?
-
[解決済み] json.dumpsでutf-8テキストを保存する場合、UTF8として保存し、 \uエスケープシーケンスとして保存しない。
-
[解決済み] UTF-8、UTF-16、およびUTF-32
-
[解決済み] PythonでUnicode(UTF-8)のファイル読み書きをする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] Python 言語を決定するには?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?