【问题标题】:Python: Write text with accent marks to a filePython:将带有重音符号的文本写入文件
【发布时间】:2019-03-27 12:55:34
【问题描述】:

我正在编写一个 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.

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

【问题讨论】:

标签: python file unicode encoding


【解决方案1】:

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

saving_json = json.dumps(saving_data)

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

【讨论】:

    猜你喜欢
    • 2017-05-11
    • 2016-01-03
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多