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

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

Сообщение Anonymous »

Я создаю быстрый скрипт для чтения файла Excel и т. д. Однако при его запуске я получаю сообщение об ошибке: «Кодек 'utf-8' не может декодировать байт 0xe7 в позиции 78: недопустимый байт продолжения». ".
Моя база данных — UTF-8, я использую Docker для локальной среды, все остальное настроено. В другом приложении с теми же учетными данными базы данных все работает нормально.
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()



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

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

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

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

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

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

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