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

时间:2019-03-27 12:55:34

标签: python file unicode encoding

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

def save_event(self, event, event_counter, output_file):
    saving_data = {}
    saving_data['_id'] = event_counter
    saving_data['main_words'] = event[2].split(', ')
    saving_data['related_words'] = [None] * len(event[3])
    related_words_loop = 0
    for related_word, weight in event[3]: # En la posicion 3 del array event se guarda la lista de palabras relacionadas
        word_json = {}
        word_json['word'] = related_word
        formatted_weight = float("{0:.2f}".format(weight)) # Formateamos el peso a un decimal de dos digitos
        word_json['weight'] = formatted_weight
        saving_data['related_words'][related_words_loop] = word_json
        related_words_loop += 1

    saving_json = json.dumps(saving_data)
    with open(output_file, 'a', encoding='utf-8') as f:
        f.write(saving_json)
        f.write('\n')

def save_events(self, output_file):
    try:
        os.remove(output_file)
    except OSError:
        pass
    event_counter = 0
    for event in self.events:
        event_counter += 1
        self.save_event(event, event_counter, output_file)

我正在为with open(output_file, 'a', encoding='utf-8') as f:上的文件指定我想要的编码,并阅读其他相关问题,这应该可以工作,但是当我检查创建的文件时,有一些单词像\u00e9ranse一样被保存它们应该看起来像éranse

我想念什么吗?

1 个答案:

答案 0 :(得分:2)

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

saving_json = json.dumps(saving_data)

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