Получить заголовок CSV-файла

У меня есть 3000 файлов Excel. Я хочу получить заголовки каждого файла и сохранить их как CSV. Однако я столкнулся с ошибкой синтаксического анализа:

 'utf-8' codec can't decode byte 0xfa in position 1: invalid start byte

Я уже видел этот пост. Это не решает проблему: UnicodeDecodeError: ' Кодек charmap не может декодировать байт X в позиции Y: символы сопоставляются с ‹undefined›

import glob
import pandas as pd

all_files = glob.glob("Converted Excels/*.xlsx")
file = all_files[0]

#Try 1
columns = []
with open(file, "r") as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    for row in csv_reader:
        columns.append([row])
        break

#Try 2
df = pd.read_csv(file, header=0, nrows=1)
df

Вот пример файла. https://docs.google.com/spreadsheets/d/194QD14g_L0NQK6j3yO2Et2ZzycfQDzJXu7vdlr20owA/edit?usp=sharing

Я преобразовал это в Excel из PDF. Но во время преобразования я указал encoding="utf8".

Как я могу получить заголовок из этого файла?

Большое спасибо за твою помощь.


person Student    schedule 04.04.2019    source источник
comment
df = pd.read_csv('2011 abril 1.csv - 2011 abril 1.csv') только что работал на меня..   -  person Erfan    schedule 05.04.2019
comment
b'\x9d'.decode('cp437') дает ¥ - так что, возможно, ваш файл находится в CP437, а не в UTF8, и вам нужно использовать правильный endcoding, когда вы его читаете.   -  person furas    schedule 05.04.2019
comment
@фурас, извини. Я обновил правильный код ошибки.   -  person Student    schedule 05.04.2019
comment
@Erfan, не могли бы вы объяснить это обозначение?   -  person Student    schedule 05.04.2019
comment
Я также скачиваю файл по ссылке, и у меня тоже работает read_csv('2011 abril 1.csv - 2011 abril 1.csv'). Linux Mint, Python 3.7, панды 0.24.1   -  person furas    schedule 05.04.2019
comment
0xFA это ú в кодировке Windows-1252, поэтому, возможно, вам следует использовать encoding='windows1252' при загрузке файлов. См.: i18nqa.com/debug/utf8-debug.html.   -  person furas    schedule 05.04.2019
comment
Кстати: .xlsx не является CSV-файлом. Вы не можете использовать read_csv() или модуль csv для чтения .xlsx. Используйте read_excel(). Насколько я знаю, .xlsx - это zip-файл с файлом xml внутри.   -  person furas    schedule 05.04.2019
comment
@фурас О! df = pd.read_excel (файл) решил проблему. Не могли бы вы опубликовать это как ответ?   -  person Student    schedule 05.04.2019


Ответы (1)


.xlsx не является файлом CSV. Вы не можете использовать pandas.read_csv() или модуль csv для чтения .xlsx.

Используйте pandas.read_excel() или модули для файлов Excel. См.: www.python-excel.org

Насколько я знаю, .xlsx - это ZIP-файл с XML-файлом внутри, так что вы также можете попробовать разархивировать его и прочитать xml.

person furas    schedule 04.04.2019