python write文のUnicodeErorrによりtxtファイルに文章を書き出せない
解決したいこと
現在、MeCabで形態素解析をした結果をtxtファイルで書き出し行うことを試みているのですが、
ソースのwrite文でUnicodeErorrがでてしまい躓いています。
このUnicodeErorrをどうデバックすればよいか教えていただきたいです。
発生している問題・エラー
C:\Users\phantom\Desktop\形態素解析>python MeCabReader.py EnglishSub.txt
実行中…
Traceback (most recent call last):
File "MeCabReader.py", line 36, in <module>
f.write(text.encode('utf-8'))
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 3-6: surrogates not allowed
該当するソースコード
# mecab 大文字小文字に注意
import MeCab
# datetime
import time
# 引数取得
import io , sys
#文字コードをsjisからutf-8に変更する
sys.stdin = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
from sys import argv
import csv
print('実行中…')
# 引数の取得
input_file_name= sys.argv[1]
# 解析対象テキストファイルを開く
f = open(input_file_name,'r',encoding='shift_jis')
# ファイルを読み込む
data = f.read()
# 分かち書きのみ出力する設定にする
mecab = MeCab.Tagger()
text = mecab.parse(data)
mecab.parse('')
#ファイル実行開始時刻を取得
timestr = time.strftime('%Y%m%d-%H%M%S')
#出力ファイル名
out_file_name = "ochasen_" + timestr + ".txt"
with open(out_file_name, 'w',encoding='utf-8') as f:
f.write(text.encode('utf-8'))
print('ファイル出力完了 ファイル名:'+ out_file_name)
自分で試したこと
自分自身で試みたことは、
sys.stdで文字コードをあらかじめ指定、またはencodingで文字コードを指定
するなどしました。
しかし、それでもエラーが出てしまい自分自身では解決が困難と
考えた為質問を投稿させて頂きました。
0