Я пытаюсь открыть несколько текстовых файлов из папки и один за другим, отформатировать их.
Мой код:
import json
import yaml
import os
import string
list_num = 0
def load_knowledge():
if os.path.exists("knowledge"):
with open("knowledge") as f:
knowledge = json.load(f)
else:
knowledge = {}
return knowledge
def write_knowledge(knowledge):
with open("knowledge", "w") as f:
json.dump(knowledge, f, indent=2, sort_keys=True)
for item in os.listdir("/Users/'My username'/Desktop/'The directory'/yml"):
with open("/Users/'My username'/Desktop/'The directory'/yml/" + item) as f:
data = yaml.safe_load(f)
dataDirectory = {}
dataDict = {}
dataDict.update(data)
knowledge = load_knowledge()
tag = dataDict['categories'][0]
for i in range(len(dataDict['conversations'])-1):
if dataDict['conversations'][list_num][0] == dataDict['conversations'][list_num+1][0]:
dataDict['conversations'][list_num][1] = (str(dataDict['conversations'][list_num][1]) + ';' + str(dataDict['conversations'][list_num+1][1]))
del dataDict['conversations'][list_num+1]
list_num = list_num - 1
list_num = list_num + 1
for list in dataDict['conversations']:
user_input = list[0].lower().strip().translate(str.maketrans('', '', string.punctuation))
response = list[1]
if tag in knowledge:
knowledge[tag][user_input] = response.split(';')
write_knowledge(knowledge)
else:
knowledge[tag] = {}
knowledge[tag][user_input] = response.split(';')
write_knowledge(knowledge)
print("Import successful!")
По какой-то причине я получаю сообщение об ошибке:
UnicodeDecodeError: код 'ascii' c не может декодировать байт 0x80 в позиции 3131: порядковый номер не в диапазоне (128)
Содержимое каталога: file1. json, file2. json, file3. json ... поэтому я получаю сообщение об ошибке, что файл не существует, даже если он известен.
Пример файла:
категории: - приветственные разговоры: - - привет - привет - - привет - привет - - привет! - Привет - - Привет - Привет! - - Привет, как дела? - Хорошо - - Привет, как дела? - Хорошо - - Привет, как дела? - Хорошо - - Привет, как дела? - Отлично - - Привет, как дела? - Могло быть лучше. - - Привет, как дела? - Не так здорово. - - Как дела? - Хорошо. - - Как дела? - Очень хорошо, спасибо. - - Как дела? - Нормально, а Вы? - - Приятно с Вами познакомиться. - Спасибо. - - Как дела? - У меня все хорошо. - - Как дела? - У меня все хорошо. Как ты? - - Привет! Рад встрече. - Спасибо. Ты тоже. - - Это удовольствие встретить тебя. - Спасибо. Ты тоже. - - Утро тебе! - Спасибо, любезно. - - Утро тебе! - И остаток дня тебе. - - Что происходит? - Немного. - - Что происходит? - Не очень много. - - Что происходит? - Не много, а ты? - - Что происходит? - Ничего особенного. - - Что происходит? - Небо поднялось, но я в порядке, спасибо. Как насчет вас?
Когда вы импортируете файл, он преобразуется в словарь:
{'category': ['greetings'], 'messages': [ ['Привет', 'Привет'], ['Привет', 'Привет'], ['Привет!', 'Привет'], ['Привет', 'Привет!'], ['Привет, Как дела? ? ',' Хорошо '], [' Привет, как дела? ',' Хорошо '], [' Привет, Как дела? ',' Хорошо '], [' Привет, Как дела? ' , «Отлично»], [«Привет, как дела?», «Может быть, лучше».], [«Привет, как дела?», «Не так здорово».], [«Как дела? ? ',' Хорошо. '], [' Как дела? ',' Очень хорошо, спасибо. '], [' Как дела? ',' Хорошо, а ты? '], [' Приятно познакомиться Вы. ',' Спасибо. '], [«Как дела?», «У меня все хорошо».], [«Как дела?», «У меня все хорошо. Как дела? «], [Привет, приятно познакомиться.», «Спасибо. Вы тоже. '], [' Приятно познакомиться. ',' Спасибо. Вы тоже. '], [' Утро тебе! "," Благодарю тебя. "], [" Утро тебе! "," И остаток дня тебе. "], [ «Что случилось?», «Не так много».], [«Что случилось?», «Не слишком много.»], [«Что случилось?», «Не так много, как у вас?»], [«Что случилось? ? "," Ничего особенного. '], ["Что случилось?", "Небо поднялось, но я в порядке, спасибо. А ты?"]]}