Ключи Dict не заключаются, когда я читаю из txt - Юлия - PullRequest
3 голосов
/ 04 февраля 2020

Я читаю файл .txt (он содержит Dict), но ключи Dict с ошибками. В исходном файле имена правильные (например, файл имеет «P. Cárdenas», но я получил «P. C \ xe1rdenas»)

>> f = open("dict.txt", "r")
>> dict_maestro = JSON.parse(f)

>>Dict{String,Any} with 5 entries:
  "P. C\xe1rdenas"      => Dict{String,Any}("dist_tm"=>Any[Any[0.248, 0.074, 0.…
  "S. L\xf3pez"         => Dict{String,Any}("dist_tm"=>Any[Any[0.096, 0.082, 0.…
  "S. Cabrera"          => Dict{String,Any}("dist_tm"=>Any[Any[0.341, 0.094, 0.…
  "C. Mu\xf1oz"         => Dict{String,Any}("dist_tm"=>Any[Any[0.246, 0.073, 0.…
  "R. Bugue\xf1o"       => Dict{String,Any}("dist_tm"=>Any[Any[0.261, 0.068, 0.…

Как я могу получить правильные имена?

1 Ответ

3 голосов
/ 05 февраля 2020

Если я не ошибаюсь, вы читаете файл как байты, а не как строки UTF. В соответствии с ответом на связанный вопрос дубликата вы должны сначала преобразовать содержимое файла в соответствующим образом закодированные строки, а затем проанализировать его как JSON. Это будет go примерно следующим образом:

s = open("dict.txt", "r") do f
    utf16(readbytes(f))
end

dict_maestro = JSON.parse(s)

Вы можете использовать utf8 вместо utf16, если это кодировка, которая есть в вашем файле.

...