Python-将JSON文件中的重音符号更改为常规字符

时间:2018-10-11 04:19:01

标签: python json encoding utf-8

我目前有一个要在python中加载的JSON文件,但是由于带有重音符号,我遇到了错误。

在加载之前,有没有办法将重音符号替换为常规字符?

我根据其他帖子建议尝试了所有编码为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 :(得分:0)

示例Json输入

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

尝试这个简单的代码