Usando python v3.7.8, intento leer datos del archivo JSON y escribir algunos datos en CSV. JSON contiene caracteres griegos y latinos.

Los datos de JSON se leen correctamente (los imprimo). Sin embargo, cuando escribo datos en CSV, los caracteres griegos no se muestran correctamente.

Este es mi código:

import json
import csv

# Opening JSON file to read data
f = open('test_2021-11-22-Andrias_lecture.json', 'r',encoding= 'utf-8')
# returns JSON object as a dictionary
data = json.load(f)

namesRowList=[]
namesColumnList=[]
connectionCountList=[]
connectionCountListTemp=[]
connectionsRow = {'':''}

# Iterating through the json list
for i in data['playerArray']:
    namesRowList.append(i['score'])
    namesColumnList.append(i['score'])
    connectionsRowTemp = {i['score']:''}
    connectionsRow.update(connectionsRowTemp)
    
print(connectionsRow)
        
# Open CSV file to store data
with open('matrix_10_Jan_2022.csv', 'w', newline='', encoding='utf-8') as file:
    headerList = [''] + namesRowList.copy()
    
    dw = csv.DictWriter(file, delimiter=';', fieldnames=headerList)
    dw.writeheader()
    
    
    for i in data['playerArray']:
        name = i['score']
        connections = i['connections']
        connectionsRow['']=name
        index = 0
        
        for name in namesRowList:
            for con in connections:
                if (name == con):
                    connectionsRow[name] = 1
                else:
                    connectionsRow[name] = 0
            index = index + 1

        dw.writerow(connectionsRow)
   file.close()
1
zinon 10 ene. 2022 a las 13:44
1
"Sin embargo, cuando escribo datos en CSV, los caracteres griegos no se muestran correctamente". ¿Cómo lo sabes?
 – 
juanpa.arrivillaga
10 ene. 2022 a las 13:51
1
Aparte, el objetivo principal de usar with open(...) as file: ... es que llamará automáticamente a file.close() para que pueda eliminar esa línea
 – 
juanpa.arrivillaga
10 ene. 2022 a las 13:51
3
Intenta usar utf-8-sig para la codificación
 – 
Eyal Golan
10 ene. 2022 a las 13:55
1
¡Funcionó! Puede agregarlo como respuesta para aceptarlo.
 – 
zinon
10 ene. 2022 a las 13:57
1
Feliz de ayudar :)
 – 
Eyal Golan
10 ene. 2022 a las 14:00

1 respuesta

La mejor respuesta

Excel requiere la firma de marca de orden de bytes (BOM) o interpretará el archivo en la codificación ANSI local. Hay un códec para eso, utf-8-sig.

3
Eyal Golan 10 ene. 2022 a las 13:58