从JSON转换为CSV时的Python 3编码问题

从JSON转换为CSV时的Python 3编码问题,python,json,character-encoding,ascii,utf,Python,Json,Character Encoding,Ascii,Utf,蟒蛇3 我看过其他的解决方案,但它们似乎没有涵盖我现在的情况。我负责编写一个脚本来获取JSON并将其转换为CSV文件 我已经完成了大部分工作,但在编写数据时遇到了一个问题。我收到的数据与写入的数据不匹配。下面是一个例子。我不知道如何才能得到这个来保留编码 我应该提到默认编码是UTF-8 输入:Necestará 输出:NECESTARÃ import csv import json import sys import sys print(sys.getdefaultencoding()) stu

蟒蛇3

我看过其他的解决方案,但它们似乎没有涵盖我现在的情况。我负责编写一个脚本来获取JSON并将其转换为CSV文件

我已经完成了大部分工作,但在编写数据时遇到了一个问题。我收到的数据与写入的数据不匹配。下面是一个例子。我不知道如何才能得到这个来保留编码

我应该提到默认编码是UTF-8

输入:Necestará

输出:NECESTARÃ

import csv
import json
import sys
import sys
print(sys.getdefaultencoding())
stuff = open('data.json')

jsonStuff = json.loads(stuff.read(), encoding="utf-8")
with open('output.csv', 'w', newline='\n', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile, delimiter=",",quotechar='"',quoting=csv.QUOTE_MINIMAL)

    for element in jsonStuff:
        row = ""
        key = element['key']
        values = element['valuesRow']

        row = element['key']
        # values[0]['value'], values[1]['value'], values[2]['value'], values[3]['value'],

        writer.writerow([element['key'], values[3]['value']])

删除
open中的
encoding='utf-8'
('output.csv','w',newline='\n',encoding='utf-8')
应该可以修复它


data.json(utf-8):
{“第一”:“necestará”,“第二”:“bodø”}

以下是

import csv
import json

with open('data.json') as stuff, open('output.csv', 'w', newline='\n', encoding='utf-8') as csvfile:
    jsonStuff = json.loads(stuff.read(), encoding="utf-8")
    writer = csv.writer(csvfile, delimiter=",", quotechar='"', quoting=csv.QUOTE_MINIMAL)
    first = jsonStuff['first']
    second = jsonStuff['second']
    writer.writerow([first, second])
。。。给出output.csv:
necestarÃ,bodø

然而

import csv
import json

with open('data.json') as stuff, open('output.csv', 'w', newline='\n') as csvfile:
    jsonStuff = json.loads(stuff.read(), encoding="utf-8")
    writer = csv.writer(csvfile, delimiter=",", quotechar='"', quoting=csv.QUOTE_MINIMAL)
    first = jsonStuff['first']
    second = jsonStuff['second']
    writer.writerow([first, second])
。。。生成output.csv:
necestará,bodø

也就是说。当您使用
json.load()
时,没有理由使用
json.load()
,并且您定义的大部分都是默认值。我只是想

import csv
import json

with open('data.json') as jsonfile, open('output.csv', 'w') as csvfile:
    json_data = json.load(jsonfile)
    writer = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL)
    first = json_data['first']
    second = json_data['second']
    writer.writerow([first, second])

向我们展示您的代码可能是一个很好的开始……也许您首先使用
.encode('utf-8')
,然后再进行转换?我实际上并没有转换它。我想保留它原来的格式。我知道flask在json响应中默认使用ascii。也许你的作者也这么认为?