从JSON转换为CSV时python3编码问题

2024-03-28 23:23:45 发布

您现在位置:Python中文网/ 问答频道 /正文

Python3

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

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

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

输入:necesitará

输出:necesitarÃ

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']])

Tags: csv数据keyimportjson编码valuesys
1条回答
网友
1楼 · 发布于 2024-03-28 23:23:45

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


在数据.json(utf-8):{"first": "necesitará", "second": "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])

。。。给予输出.csv:necesitará,bodø

但是。。。在

^{pr2}$

。。。生产输出.csv:necesitará,bodø

那就是说。当您有json.load()时,没有理由使用json.loads(),而且您定义的大多数内容都是默认值。我只想。。。在

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])

相关问题 更多 >