Я нашел файл, который похож на то, на что ссылается OP, если не точно, кодировщик. json.
Глядя в файл, я вижу часть текста упоминается в вопросе OP:
{... "\u00a1": 94, "\u00a2": 95, ...}
И если я запускаю код OP для преобразования encoder.json
в file.txt
, я вижу эффект «изменения кодовых точек ("\u00a1"
) в строки (* 1011»). *) ".
Но это не должно быть проблемой, потому что они означают одно и то же:
>>> print("¡ 94\n¢ 95")
¡ 94
¢ 95
>>> print("\u00a1 94\n\u00a2 95")
¡ 94
¢ 95
>>> "¡ 94\n¢ 95"=="\u00a1 94\n\u00a2 95"
True
То, что символы закодированы как escape-последовательности Юникода в оригинальном JSON file - это всего лишь деталь того, как работает Python кодер JSON (по умолчанию ensure_ascii=True
):
>>> json.dumps({"¡": 94, "¢": 95})
'{"\\u00a1": 94, "\\u00a2": 95}'
>>> json.dumps({"¡": 94,"¢": 95}, ensure_ascii=False)
'{"¡": 94, "¢": 95}'
Если вы используете Python2, это всего лишь немного отличается (и может быть более запутанным) с префиксом u"..."
:
>>> print("¡ 94\n¢ 95")
¡ 94
¢ 95
>>> print(u"\u00a1 94\n\u00a2 95")
¡ 94
¢ 95
>>> u"¡ 94\n¢ 95"==u"\u00a1 94\n\u00a2 95"
True
>>> # But this is the same
>>> json.dumps({"¡": 94, "¢": 95})
'{"\\u00a1": 94, "\\u00a2": 95}'
>>> # But this is a little different
>>> json.dumps({"¡": 94,"¢": 95}, ensure_ascii=False)
'{"\xc2\xa1": 94, "\xc2\xa2": 95}'
>>> # But they !! all **mean** the same thing !!
>>> \
... json.loads('{"\xc2\xa1": 94, "\xc2\xa2": 95}') == \
... json.loads('{"\\u00a1": 94, "\\u00a2": 95}') == \
... json.loads('{"¡": 94, "¢": 95}')
True
На основании того, что я прочитал в этом gpt-2 выпуске :
Код кодера не любит пробелы, поэтому они заменяют пробелы и другие пробельные символы другими байтами Юникода. См. encoder.py
для получения подробной информации.
с текстовым файлом, который выглядит следующим образом, вероятно, испортит ваш словарный запас:
...
\u00a1 94
\u00a2 95
...
Была ли у вас реальная проблема с использованием file.txt
в вашей цепочке обработки НЛП?