Ir para conteúdo
  • 0

Conversão CSV para XLSX ou XLSB(preferência) - Erro UTF-8


Júlio Sene

Pergunta

  • Alunos

Bom dia, sou iniciante em Python, tento utilizar a linguagem para automatizar alguns processos na minha área (contábil). Estou tentando efetuar a conversão de arquivos CSV para XLSX ou XLSB, porém está retornando o erro abaixo. Segue o código utilizado (já tentei outros) e também o erro reportado. Alguém poderia auxiliar na solução? Grato!

__________________________________________________________________________

Código:

import pandas as pd

readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv')
readfile.to.excel('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.xlsx', index=None, header=True, encoding=None, encoding_erros="replace")
____________________________________________________________________________
Erro:

UnicodeDecodeError                        Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_22084\1731728808.py in <module>
      1 import pandas as pd
      2 
----> 3 readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv')
      4 readfile.to.excel('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.xlsx', index=None, header=True, encoding=None, encoding_erros="replace")

~\anaconda3\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
    309                     stacklevel=stacklevel,
    310                 )
--> 311             return func(*args, **kwargs)
    312 
    313         return wrapper

~\anaconda3\lib\site-packages\pandas\io\parsers\readers.py in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)
    676     kwds.update(kwds_defaults)
    677 
--> 678     return _read(filepath_or_buffer, kwds)
    679 
    680 

~\anaconda3\lib\site-packages\pandas\io\parsers\readers.py in _read(filepath_or_buffer, kwds)
    573 
    574     # Create the parser.
--> 575     parser = TextFileReader(filepath_or_buffer, **kwds)
    576 
    577     if chunksize or iterator:

~\anaconda3\lib\site-packages\pandas\io\parsers\readers.py in __init__(self, f, engine, **kwds)
    930 
    931         self.handles: IOHandles | None = None
--> 932         self._engine = self._make_engine(f, self.engine)
    933 
    934     def close(self):

~\anaconda3\lib\site-packages\pandas\io\parsers\readers.py in _make_engine(self, f, engine)
   1232 
   1233         try:
-> 1234             return mapping[engine](f, **self.options)
   1235         except Exception:
   1236             if self.handles is not None:

~\anaconda3\lib\site-packages\pandas\io\parsers\c_parser_wrapper.py in __init__(self, src, **kwds)
     73 
     74         kwds["dtype"] = ensure_dtype_objs(kwds.get("dtype", None))
---> 75         self._reader = parsers.TextReader(src, **kwds)
     76 
     77         self.unnamed_cols = self._reader.unnamed_cols

~\anaconda3\lib\site-packages\pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()

~\anaconda3\lib\site-packages\pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._get_header()

~\anaconda3\lib\site-packages\pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows()

~\anaconda3\lib\site-packages\pandas\_libs\parsers.pyx in pandas._libs.parsers.raise_parser_error()

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 3: invalid continuation byte
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
Agora, Júlio Sene disse:

Caro Champanjonata, deu certo, de fato digitei errado to.excel(), agora acredito que preciso analisar os parâmetros do readfile.to_excel() para fazer alguns ajustes (cabeçalho, grade, última coluna) no caso. Mas resolveu minha questão. Muito obrigado!!

Você pode fazer assim para os cabeçalhos:

colunas = ["coluna1", "coluna2", "coluna3"] # precisa estar na mesma ordem do csv

readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv', encoding = "ISO-8859-1" ,sep=";", names=colunas)

ou caso seu csv já tenha os nomes das colunas, simplesmente use header=0

Não esqueça de marcar minha resposta como solução por favor.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
49 minutos atrás, Júlio Sene disse:

Bom dia, sou iniciante em Python, tento utilizar a linguagem para automatizar alguns processos na minha área (contábil). Estou tentando efetuar a conversão de arquivos CSV para XLSX ou XLSB, porém está retornando o erro abaixo. Segue o código utilizado (já tentei outros) e também o erro reportado. Alguém poderia auxiliar na solução? Grato!

__________________________________________________________________________

Código:

import pandas as pd

readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv')
readfile.to.excel('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.xlsx', index=None, header=True, encoding=None, encoding_erros="replace")
____________________________________________________________________________
Erro:

UnicodeDecodeError                        Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_22084\1731728808.py in <module>
      1 import pandas as pd
      2 
----> 3 readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv')
      4 readfile.to.excel('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.xlsx', index=None, header=True, encoding=None, encoding_erros="replace")

~\anaconda3\lib\site-packages\pandas\util\_decorators.py in wrapper(*args, **kwargs)
    309                     stacklevel=stacklevel,
    310                 )
--> 311             return func(*args, **kwargs)
    312 
    313         return wrapper

~\anaconda3\lib\site-packages\pandas\io\parsers\readers.py in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)
    676     kwds.update(kwds_defaults)
    677 
--> 678     return _read(filepath_or_buffer, kwds)
    679 
    680 

~\anaconda3\lib\site-packages\pandas\io\parsers\readers.py in _read(filepath_or_buffer, kwds)
    573 
    574     # Create the parser.
--> 575     parser = TextFileReader(filepath_or_buffer, **kwds)
    576 
    577     if chunksize or iterator:

~\anaconda3\lib\site-packages\pandas\io\parsers\readers.py in __init__(self, f, engine, **kwds)
    930 
    931         self.handles: IOHandles | None = None
--> 932         self._engine = self._make_engine(f, self.engine)
    933 
    934     def close(self):

~\anaconda3\lib\site-packages\pandas\io\parsers\readers.py in _make_engine(self, f, engine)
   1232 
   1233         try:
-> 1234             return mapping[engine](f, **self.options)
   1235         except Exception:
   1236             if self.handles is not None:

~\anaconda3\lib\site-packages\pandas\io\parsers\c_parser_wrapper.py in __init__(self, src, **kwds)
     73 
     74         kwds["dtype"] = ensure_dtype_objs(kwds.get("dtype", None))
---> 75         self._reader = parsers.TextReader(src, **kwds)
     76 
     77         self.unnamed_cols = self._reader.unnamed_cols

~\anaconda3\lib\site-packages\pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()

~\anaconda3\lib\site-packages\pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._get_header()

~\anaconda3\lib\site-packages\pandas\_libs\parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows()

~\anaconda3\lib\site-packages\pandas\_libs\parsers.pyx in pandas._libs.parsers.raise_parser_error()

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 3: invalid continuation byte

Olá Júlio, tudo bem?

Tenta assim:

readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv', encoding = "utf-8" )

ou

readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv', encoding = "ISO-8859-1" )

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
2 horas atrás, champanjonata disse:

Olá Júlio, tudo bem?

Tenta assim:

readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv', encoding = "utf-8" )

ou

readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv', encoding = "ISO-8859-1" )

 

ChampanJonata, tudo bem e com vc?

 

Eu tentei das formas que você sugeriu, e a segunda parece estar mais próximo da solução. Fiz a adaptação pelo separador ";". Agora retornou o seguinte erro na linha 2:

 

Código utilizado:

import pandas as pd
readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv', encoding = "ISO-8859-1" ,sep=";")

readfile.to.excel('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.xlsx')

 

Erro:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_8336\1474717611.py in <module>
      4 
      5 #readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv', encoding = "utf-8" )
----> 6 readfile.to.excel('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.xlsx')

~\anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   5573         ):
   5574             return self[name]
-> 5575         return object.__getattribute__(self, name)
   5576 
   5577     def __setattr__(self, name: str, value) -> None:

AttributeError: 'DataFrame' object has no attribute 'to'
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
4 minutos atrás, Júlio Sene disse:

 

ChampanJonata, tudo bem e com vc?

 

Eu tentei das formas que você sugeriu, e a segunda parece estar mais próximo da solução. Fiz a adaptação pelo separador ";". Agora retornou o seguinte erro na linha 2:

 

Código utilizado:

import pandas as pd
readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv', encoding = "ISO-8859-1" ,sep=";")

readfile.to.excel('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.xlsx')

 

Erro:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_8336\1474717611.py in <module>
      4 
      5 #readfile = pd.read_csv('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.csv', encoding = "utf-8" )
----> 6 readfile.to.excel('C:\\Users\\Administrador\\Documents\\Nova pasta\\2021_12_av.xlsx')

~\anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   5573         ):
   5574             return self[name]
-> 5575         return object.__getattribute__(self, name)
   5576 
   5577     def __setattr__(self, name: str, value) -> None:

AttributeError: 'DataFrame' object has no attribute 'to'

Acredito que a forma correta é readfile.to_excel() e não readfile.to.excel().... testa aí. Se quiser enviar o csv com uma linha apenas, eu gero o script pra você.

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 hora atrás, champanjonata disse:

Acredito que a forma correta é readfile.to_excel() e não readfile.to.excel().... testa aí. Se quiser enviar o csv com uma linha apenas, eu gero o script pra você.

Caro Champanjonata, deu certo, de fato digitei errado to.excel(), agora acredito que preciso analisar os parâmetros do readfile.to_excel() para fazer alguns ajustes (cabeçalho, grade, última coluna) no caso. Mas resolveu minha questão. Muito obrigado!!

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...