Я пытаюсь записать некоторые данные в файл.В некоторых случаях, очевидно, в зависимости от данных, которые я пытаюсь записать, я получаю UnicodeEncodeError (UnicodeEncodeError: кодек 'charmap' не может закодировать символ '\ U0001f622' в позиции 141: символ сопоставляется с) Я провел некоторое исследование и выяснил,что я могу кодировать данные, которые я пишу, с помощью функции кодирования.
Это код перед его изменением (не поддерживающий Unicode):
scriptDir = os.path.dirname(__file__)
path = os.path.join(scriptDir, filename)
with open(path, 'w') as fp:
for sentence in iobTriplets:
fp.write("\n".join("{} {} {}".format(triplet[0],triplet[1],triplet[2]) for triplet in sentence))
fp.write("\n")
fp.write("\n")
Так что я, возможно, мог бы просто добавить кодировку при записи так:
fp.write("\n".join("{} {} {}".format(triplet[0],triplet[1],triplet[2]).encode('utf8') for triplet in sentence))
Но это не работает, так как я получаю следующую ошибку: TypeError: элемент последовательности 0: ожидаемый экземпляр str, найдены байты
Я также попытался открыть файл в байтовом режимес добавлением AB за W.Однако это не дало никаких результатов.
Кто-нибудь знает, как это исправить?Кстати: я использую Python 3.