Python - изменение символов акцента в файле JSON на обычный символ - PullRequest
0 голосов
/ 11 октября 2018

В настоящее время у меня есть файл JSON, который я пытаюсь загрузить в python, однако из-за символов ударения я получаю ошибки.

Есть ли способ заменить символы ударения на обычные символы перед выполнением загрузки?

Я перепробовал все методы с кодировкой в ​​UTF-8, основываясь на других предложениях.Например:

json.loads(line.decode("utf-8","ignore"))

или

with open("test.json", encoding='utf-8') as data_file:                           
    data = json.load(data_file)

Поскольку ни одна из этих опций не сработала, я хотел посмотреть, есть ли способ заменить символ ударения.

Примеркод:

import csv
import json

infile = open("infile.json","r") 
outfile = open("outfile.csv", "w") 

writer = csv.writer(outfile)
readin = json.loads(infile.read())
count = 1

for row in readin["entry1"]["entry2"]:

    if count == 1:
        writer.writerow(row.keys())
        count = count + 1

    writer.writerow(row.values())

outfile.close()

Вышеуказанное работает, ТОЛЬКО если нет абсолютно никаких символов акцента.

образец JSON-файла:

{
  "entry1": {
    "entry2": [
      {
        "firstName": "Sam",
        "lastName": "XXX"
      },
      {
        "firstName": "Jose",
        "lastName": "Peña"
      }
    ]
  }
}

Мне бы хотелось, чтобы мой выходной файл выглядел следующим образом:

firstName, lastName
Sam,XXXX
Jose,Peña

Как вы можете видеть, есть ударение - что япродолжаю получать ошибку с.Ниже приведен пример ошибки:

Traceback (most recent call last):
  File "/Users/Mac/Desktop/fileconversion.py", line 8, in <module>
    readin = json.loads(infile.read())
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
**UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1868: ordinal not in range(128)**

Благодарим за любую помощь.

Спасибо.

1 Ответ

0 голосов
/ 11 октября 2018

Пример ввода Json

import json
json_data = {"a":"\xc3\x96accentchar", "b":"normal"}
z = json.dumps(json_data)
final_data = json.loads(z)

Попробуйте этот простой код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...