65993


以下のように入力して作ったファイルに英単語テストを書きたかったのですが、生成したテキストファイルを開いてみたらエラーが出ていました。

この場合どうしたら対応できるのでしょうか。環境はJupyter Notebookです。

**エラーメッセージ**

[code]

    Error! C:\Users\Ryotaro Arakawa\programming\英単語テスト_01.txt is not UTF-8 encoded
    Saving disabled.
    See Console for more details.
    
[/code]

**ソースコード**

[code]

    # -*- coding: utf-8 -*-
    import re
    import random
    
    source = 'english_words.txt'
    
    with open(source, 'r', encoding='utf-8') as f:
        data = f.read().splitlines()
        english_words = [l.strip() for i, l in enumerate(data) if ((i%2) == 0)]
        jp_meanings = [l.strip() for i, l in enumerate(data) if ((i%2) != 0)]
    
    words_dict = dict(zip(english_words,jp_meanings))
    
    print(words_dict)
    
    n_tests = 5
    n_questions = 50
    for test_num in range(n_tests):
        with open('英単語テスト_{:02d}.txt'.format(test_num +1),'w') as f:
    
            f.write('第{}回英単語テスト\n\n'.format(test_num +1))
    
            for question_num in range(n_questions):
                question_word = random.choice(english_words)
                correct_answer = words_dict[question_word]
    
                meanings_copy =jp_meanings.copy()
                meanings_copy.remove(correct_answer)
                wrong_answers = random.sample(meanings_copy,3)
    
                answer_options = [correct_answer] + wrong_answers
    
                random.shuffle(answer_options)
    
                f.write('問{}. {}\n\n'.format(question_num + 1,question_word))
    
                for i in range(4):
                    f.write('{}.{}\n'.format(i + 1, answer_options[i]))
                f.write('\n\n')
    
[/code]


CC BY-SA 4.0
2020-04-26T08:10:01.833
65991
2020-04-26T08:54:20.987
2020-04-26T08:15:39.487
19110
39563
question
python python3 文字コード
作ったテキストファイルに文字が入らない


まずはエラーメッセージのとおりに、書き込み用ファイルの`open`時にも`encoding='utf-8'`を指定してみましょう。  
これを：

[code]

    with open('英単語テスト_{:02d}.txt'.format(test_num +1),'w') as f:
    
[/code]

こうしてみてください。

[code]

    with open('英単語テスト_{:02d}.txt'.format(test_num +1),'w',encoding='utf-8') as f:
    
[/code]

それと、エラーメッセージに`See Console for more details.`とあるので、Jupyter
NotebookのConsoleに何かメッセージが出ているでしょう。  
そちらも読み取って質問に追記してみてください。  
その内容によっては別の対処が必要になるかもしれません。


CC BY-SA 4.0
2020-04-26T08:54:20.987
65993
2020-04-26T08:54:20.987
26370
65991
answer