Подтвердить что ты не робот

Проверьте, имеет ли файл формат CSV с Python

Может ли кто-нибудь предоставить эффективный способ проверить, имеет ли файл формат CSV с помощью Python?

4b9b3361

Ответ 1

Вы можете попробовать что-то вроде следующего, но только потому, что вы получаете диалект от csv.Sniffer действительно недостаточно, чтобы гарантировать у вас есть действительный CSV-документ.

csv_fileh = open(somefile, 'rb')
try:
    dialect = csv.Sniffer().sniff(csv_fileh.read(1024))
    # Perform various checks on the dialect (e.g., lineseparator,
    # delimiter) to make sure it sane

    # Don't forget to reset the read position back to the start of
    # the file before reading any entries.
    csv_fileh.seek(0)
except csv.Error:
    # File appears not to be in CSV format; move along

Ответ 2

Python имеет модуль csv, поэтому вы можете попробовать разобрать его под разными диалектами.

Ответ 3

Добавление к ответу gotgenes: я достиг хороших результатов, также проверив наличие непечатаемых символов, которые (tm) не должны быть включены в CSV файлы.

def is_csv(infile):
    try:
        with open(infile, newline='') as csvfile:
            start = csvfile.read(4096)

            # isprintable does not allow newlines, printable does not allow umlauts...
            if not all([c in string.printable or c.isprintable() for c in start]):
                return False
            dialect = csv.Sniffer().sniff(start)
            return True
    except csv.Error:
        # Could not get a csv dialect -> probably not a csv.
        return False

Ответ 4

Вам нужно четко продумать, что вы считаете CSV файлом.

Например, какие символы могут встречаться между запятыми. Это только текст? Могут ли быть и символы Юникода? Должна ли каждая строка иметь такое же количество запятых?

Нет строгого определения файла CSV, о котором я знаю. Обычно текст ASCII разделяется запятыми, и каждая строка имеет одинаковое количество запятых и заканчивается терминатором линии платформы.

В любом случае, как только вы ответите на вышеуказанные вопросы, вы будете немного дальше на своем пути к пониманию того, как определить, когда файл является CSV файлом.

Ответ 5

Попробуйте разобрать его как CSV и посмотреть, есть ли у вас ошибка.