将JSON转换为EXCEL(xlsx)并保存UTF-8不起作用(Python)

Convert JSON to EXCEL(xlsx) and save UTF-8 don't work (Python)

提问人:Braian 提问时间:4/26/2023 最后编辑:AlexandrBraian 更新时间:7/6/2023 访问量:91

问:

我在 python 中的代码无法将我的 json 文件转换为 UTF-8 格式的 exel,我的 excel 返回这个 caractere ' ',大写和重音,例如:'Á'。我的代码:

import json
import pandas as pd
import os
from openpyxl import Workbook

caminho = "C:/Users/Braian/Documents/Área de Trabalho/Braian/VS Code/appAPI/JSON/Cliente"
lista_arquivos = os.listdir(caminho)

lista_datas = []

for arquivo in lista_arquivos:
    # Descobrir data arquivo
    if ".json" in arquivo:
        data = os.path.getmtime(f'{caminho}/{arquivo}')
        lista_datas.append((data, arquivo))

    # data inicial = 01/01/2021
    # data1 = 02/01/2021 -> 10.000
    # data2 = 12/02/2021 -> 150.000

lista_datas.sort(reverse=True)
ultimo_arquivo = lista_datas[0]

# Abaixo eu irei converter o arquivo Json em XLSX

print("\nConvertendo seu arquivo em Json para Xlsx...")

# Obtém os dados que eu preciso
with open(os.path.join(caminho, ultimo_arquivo[1]), encoding='utf-8-sig') as json_file:
    data = json.load(json_file)
    df = pd.DataFrame(data['data']['rows'])

# Seta o nome do arquivo
nome_arquivo = f"{caminho}/Cliente.xlsx"

# Cria um objeto Workbook do openpyxl
workbook = Workbook()
worksheet = workbook.active

# Adiciona os dados ao Worksheet
for row_data in data['data']['rows']:
    worksheet.append(list(row_data.values()))

# Salva o arquivo
workbook.save(nome_arquivo)

print("\nArquivo em Xlsx foi finalizado!")

我尝试转换更多编码,例如“UTF-8”、“UTF-16”、“LATIN-1”等。

python json 熊猫 utf-8 openpyxl

评论

1赞 Panagiotis Kanavos 4/26/2023
尝试删除 .问题出在源文本文件中,而不是 Python、Excel 或 Windows。Windows 本身是 Unicode。Python 3 字符串也是如此。Excel 文件 (xlsx) 是包含以 UTF8 编码的 XML 文件的 ZIP 包。我怀疑源文件被保存为 ASCII,或者更具体地说,保存在当前用户语言环境的代码页中。的默认编码将使用该默认区域设置。如果文件来自客户端,请尝试使用 来确定实际编码encoding='utf-8-sig'openchardet
0赞 Panagiotis Kanavos 4/26/2023
如果源文件是 UTF8,则不会有任何问题。如果是 UTF16,则每个源字符都将获得两个损坏的字符。这意味着该文件使用单字节代码页
0赞 Braian 4/26/2023
我尝试使用chardet,但它不再起作用,我有一个创建json的第一个代码,这个json编码是UTF-8。我将分享一部分代码: ''' # 使用 open(caminho + filename, 'w', encoding='UTF-8') 保存存档为 f: json.dump(r_dict, f, ensure_ascii=False) print(f'文件名 {filename} 已成功保存!'''
0赞 Braian 4/26/2023
我正在使用以 JSON 格式返回结果的 API。我正在尝试使用我共享的代码将此文件保存在我的计算机上,但我怀疑该问题可能与 JSON 配置有关。
0赞 Charlie Clark 4/26/2023
您使用了错误的编码。您应该能够通过查看 JSON 来检查这一点。

答: 暂无答案