Python 3.5.1 で文字コード指定してテキストファイルを読み込んだ際のメモ

  • codecs を使うと良い様子
# -*- conding: utf-8 -*-

import codecs
import os

file = '.{}UTF8.txt'.format(os.path.sep)

f = codecs.open(file, 'r', 'utf-8')
for lineno, line in enumerate(f, start=1):
    print(lineno, ':', line.rstrip())
f.close()

または

# -*- conding: utf-8 -*-

import codecs
import os

file = '.{}UTF8.txt'.format(os.path.sep)

with codecs.open(file, 'r', 'utf-8') as f:
    for lineno, line in enumerate(f, start=1):
        print(lineno, ':', line.rstrip())

など

  • codecs.open() の第三引数に 'utf-8' を指定してみたところ
  • 他、lineno で行番号を出力
  • 他、''.rstrip() で行末の改行を除去

出力例:

1 : これは1行目
2 : 2行目
3 : 3行目の文章
4 : 4行目

場合によっては、
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
などで標準出力の文字コードも変える。 以前試した別記事:

行番号 lineno についてはこちらを参考にしました: