我正在编写一个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
。
我想念什么吗?
答案 0 :(得分:2)
问题是如何生成json字符串:
saving_json = json.dumps(saving_data)
默认值为ensure_ascii=True
。将其设置为False将使您的非ASCII字符保持原样。参见https://docs.python.org/3/library/json.html#json.dump