Python:将带重音符号的文本写入文件

Lui*_*cri 1 python unicode encoding file

我正在编写一个 twitter 事件检测器,在检测结束时我想将结果保存在 .txt 文件中。由于推文是用西班牙语写的,结果的某些单词可能包含重音符号,并且我在尝试按应有的方式保存它们时遇到了一些问题。

\n\n
def save_event(self, event, event_counter, output_file):\n    saving_data = {}\n    saving_data[\'_id\'] = event_counter\n    saving_data[\'main_words\'] = event[2].split(\', \')\n    saving_data[\'related_words\'] = [None] * len(event[3])\n    related_words_loop = 0\n    for related_word, weight in event[3]: # En la posicion 3 del array event se guarda la lista de palabras relacionadas\n        word_json = {}\n        word_json[\'word\'] = related_word\n        formatted_weight = float("{0:.2f}".format(weight)) # Formateamos el peso a un decimal de dos digitos\n        word_json[\'weight\'] = formatted_weight\n        saving_data[\'related_words\'][related_words_loop] = word_json\n        related_words_loop += 1\n\n    saving_json = json.dumps(saving_data)\n    with open(output_file, \'a\', encoding=\'utf-8\') as f:\n        f.write(saving_json)\n        f.write(\'\\n\')\n\ndef save_events(self, output_file):\n    try:\n        os.remove(output_file)\n    except OSError:\n        pass\n    event_counter = 0\n    for event in self.events:\n        event_counter += 1\n        self.save_event(event, event_counter, output_file)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在指定我想要的文件编码with open(output_file, \'a\', encoding=\'utf-8\') as f:并阅读其他一些相关问题,这应该可行,但是当我检查创建的文件时,有些单词会被保存,就像\\u00e9ranse它们应该出现的那样\xc3\xa9ranse.

\n\n

知道我是否遗漏了什么吗?

\n

adr*_*tam 5

问题是如何生成 json 字符串:

saving_json = json.dumps(saving_data)
Run Code Online (Sandbox Code Playgroud)

默认会有ensure_ascii=True. 将其设置为 False 将使非 ASCII 字符保持原样。请参阅https://docs.python.org/3/library/json.html#json.dump