我目前有一个要在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)**
感谢任何帮助。
谢谢。
答案 0 :(得分:0)
示例Json输入
import json
json_data = {"a":"\xc3\x96accentchar", "b":"normal"}
z = json.dumps(json_data)
final_data = json.loads(z)
尝试这个简单的代码