Кодек «UTF-8» не может декодировать байт 0xe7 в позиции 78: недопустимый байт продолжения – Ajuda aePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Кодек «UTF-8» не может декодировать байт 0xe7 в позиции 78: недопустимый байт продолжения – Ajuda ae

Сообщение Anonymous »

Я создаю быстрый скрипт для чтения файла Excel и т. д. Но когда я запускаю его, он выдает ошибку: «Кодек 'utf-8' не может декодировать байт 0xe7 в позиции 78: недопустимый байт продолжения».
Моя база данных — UTF8, я Я использую докер для локальной среды и все такое. В другом приложении с теми же банковскими реквизитами работает нормально.

Код: Выделить всё

import tkinter as tk
from tkinter import ttk
import psycopg2
import pandas as pd
from unidecode import unidecode
import threading

def normalizar_nome(nome):
return unidecode(nome).lower()

def profissional_combina(nome_excel_norm, nome_banco_norm):
partes_excel = nome_excel_norm.split()
if len(partes_excel) >= 2:
primeira = partes_excel[0]
ultima = partes_excel[-1]
return (primeira in nome_banco_norm) and (ultima in nome_banco_norm)
else:
return partes_excel[0] in nome_banco_norm

def processar_dados():
try:
resultados.clear()
progress_var.set(0)
label_status["text"] = "Processando..."
conn = psycopg2.connect(
host="localhost",
port=5432,
database="xxx",
user="[email protected]",
password="teste@exemplo01"
)
cur = conn.cursor()

cur.execute("SELECT id, nome FROM tinc_profissional;")
rows = cur.fetchall()
conn.close()

profissionais_banco = []
for pid, pnome in rows:
try:
pnome_utf8 = pnome.encode('utf-8', 'replace').decode('utf-8', 'replace')
profissionais_banco.append((pid, pnome_utf8))
except Exception as e:
print(f"Erro nesse krai {pid}: {e}")

df = pd.read_excel("vendor/Agenda 2024.1 EXPANSÃO - TESTE.xlsx", sheet_name="Agenda")
profissionais_excel = df["TELECONSULTOR"].dropna().unique()
profissionais_excel_norm = [normalizar_nome(nome) for nome in profissionais_excel]

total = len(profissionais_excel)
for i, (nome_excel, nome_excel_norm) in enumerate(zip(profissionais_excel, profissionais_excel_norm)):
for pid, pnome in profissionais_banco:
if profissional_combina(nome_excel_norm, normalizar_nome(pnome)):
resultados.append({
"Nome Excel": nome_excel,
"ID Banco": pid,
"Nome Banco": pnome
})
progress_var.set((i + 1) / total * 100)
label_status["text"] = f"Processando: {nome_excel} ({i + 1}/{total})"
root.update_idletasks()
print(f"Deu bom excel mais total: {nome_excel} ({i + 1}/{total})")

if resultados:
df_resultados = pd.DataFrame(resultados, columns=["Nome Excel", "ID Banco", "Nome Banco"])
df_resultados.to_excel("vendor/Resultados.xlsx", index=False)
label_status["text"] = f"Concluído krai! salvo em 'Resultados.xlsx'."
else:
label_status["text"] = "Nenhum resultado encontrado."

progress_var.set(100)

except Exception as e:
label_status["text"] = f"Erro: {str(e)}"
print(f"Esse no processamento analisa ai krai: {str(e)}")  # DEBUG

def executar():
threading.Thread(target=processar_dados).start()

resultados = []

root = tk.Tk()
root.title("Espera que ta executando")

progress_var = tk.DoubleVar()
progress = ttk.Progressbar(root, variable=progress_var, maximum=100)
progress.pack(pady=10, padx=20, fill="x")

label_status = tk.Label(root, text="Pronto para iniciar...")
label_status.pack(pady=5)

btn_start = tk.Button(root, text="Iniciar", command=executar)
btn_start.pack(pady=10)

root.mainloop()

Я .NET-разработчик, и когда я пытаюсь что-то автоматизировать с помощью py с пандами, мне не везет (хотя сейчас кодирует b.o). Кто-нибудь здесь может помочь?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ation-byte
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»