Сравнение не дублирующегося формата содержимого файла двух файлов в Python - PullRequest
0 голосов
/ 10 сентября 2018

Мне интересно, есть ли способ сравнить формат содержимого файлов файлов с разделителями-запятыми (CSV) в Python. У меня есть скрипт, который принимает входной CSV-файл и дает сгенерированный вывод. Я попытался запустить скрипт на заданном наборе файлов, но получил сообщение об ошибке с файлами, которые мне дали. Чтобы проверить, была ли проблема в сценарии, я запустил сценарий, используя другой набор файлов с тем же форматом, который работал. Это приводит меня к мысли, что один из файлов отформатирован неправильно. Я попытался визуально проверить форматирование, но слишком много столбцов и строк, чтобы проверить наличие проблем форматирования и типов данных столбцов.

Пример:

Содержимое File_1.csv содержит:

Field_1,Field_2,Field_3, Field_4, ...
ABC, 2012, CH4, 31231.123, ...
ABC2, 20134, H20, 3234.3432, ...
..., ..., ..., ..., ...

Содержимое File_2.csv содержит:

Field_1, Field_2, Field_3, Field_4, ...
BBC, 324, OH, 323.232, ...
BBC2, 2112, HCL, 23.2324, ...
..., ..., ..., ..., ...

Идея состоит в том, чтобы использовать форматирование file_1.csv, чтобы убедиться, что file_2.csv имеет одинаковый формат и типы данных. По сути, он проверяет, соответствует ли файл два тому же формату, что и файл один:

<Str>, <Str>, <Str>, <Str>, ...
<Str>, <int>, <Char>, <float>, ...
<Str>, <int>, <Char>, <float>, ...
<Str>, <int>, <Char>, <float>, ...

Предполагая, что File 1 имеет правильный формат имени столбца и типы данных строки. Была ли написана программа / скрипт, который сравнивает формат файла и типы данных? Или я должен был бы сделать это с нуля?

1 Ответ

0 голосов
/ 10 сентября 2018

Вы можете сделать это самостоятельно довольно быстро. Я предполагаю, что вы получаете ошибку при попытке набрать приведение одного из полей к типу int / char или к чему-то еще. Вы можете использовать оператор try-Кроме, чтобы попытаться точно определить ошибку. Вот некоторый псевдокод:

for line in file:
    # separate the fields
    fields  = line.split(',')
    try:
        field1 = int(fields[0])
    except:
        # you had an error

Очевидно, что если у вас много полей, это может быть утомительно, но я предполагаю, что у вас уже есть что-то подобное в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...