2010-07-26 6 views
15

VBA больше не режет для меня. У меня много огромных файлов Excel, для которых мне нужно сделать множество вычислений и разбить их на другие файлы Excel/CSV.Самый маленький язык кривой обучения для работы с файлами CSV

Мне нужен язык, который я могу забрать в течение следующих нескольких дней, чтобы делать то, что мне нужно, потому что это своего рода чрезвычайная ситуация. Мне предложили python, но я хотел бы проверить с вами, если есть что-то еще, что делает обработку файлов CSV быстро и легко.

+1

Вам нужно подмножество данных? Если это так, R будет намного проще использовать для управления, чем Python, поскольку его подмножество функций встроено в базовый язык. – chimeracoder

+1

По моему опыту, сохранение ваших данных Excel в виде разделителей с табуляцией, а не CSV, избавляет от многих головных болей. Парсинг становится куском пирога, так как все, что вам нужно сделать, это разделить файл на символы «новой строки» и разделить строки на символы табуляции. Нет кавычек или апострофов. Разграниченный табулятор также является собственным форматом, если вы копируете/вставляете данные из листа Excel в текстовый редактор. – devuxer

+1

@ DanM: Ваш опыт кажется крайне ограниченным. Как Excel 2003, так и Excel 2007 ведут себя следующим образом, когда «Сохранить как текст (разделитель табуляции)»: если поле содержит какие-либо запятые или новые строки, это поле обернуто в кавычки. Если поле содержит любые кавычки, каждая цитата удваивается, и все поле затем завертывается в кавычки. Другими словами, очень похоже на CSV. –

ответ

5

Есть много инструментов для работы, но да, Python, пожалуй, лучший в наши дни. Существует специальный модуль для работы с csv-файлами. Проверьте официальное сообщение docs.

6

Какой расчет вы должны будете сделать? Может быть, R будет альтернативой?

EDIT: просто дать несколько основных примеров

# Basic usage 
data <- read.csv("myfile.csv") 

# Pipe-separated values 
data <- read.csv("myfile.csv", sep="|") 

# File with header (columns will be named as header) 
data <- read.csv("myfile.csv", header=TRUE) 

# Skip the first 5 lines of the file 
data <- read.csv("myfile.csv", skip=5) 

# Read only 100 lines 
data <- read.csv("myfile.csv", nrows=100) 
+0

ничего интенсивного, просто нужно иметь возможность работать с большими файлами и брать журналы, а также иметь возможность создавать csv файлы быстро –

+1

@I__: Тогда я бы сказал, что R - отличный выбор. Чтение csv-файла - это просто вызов 'read.csv' ... – nico

+0

Я никогда не использовал язык сам, но, глядя его на 10 минут, он действительно выглядит так, как будто он легко справляется с csv. –

5

Python, безусловно, имеет небольшой кривой обучения, а также работает с файлами в формате CSV хорошо

2

Perl является удивительно эффективным для языка сценариев для текста. В cpan.org имеется огромное количество модулей для работы с данными CSV. Я также написал и написал данные в формате XLS с другим модулем Perl. Если бы вы могли использовать VBA, вы, конечно же, можете узнать Perl (основы Perl просты, хотя для вас или других так же легко написать короткий, но загадочный код).

+0

Полноценные синтаксические анализаторы CSV, такие как «Текст :: CSV_XS» Perl, предназначены для обработки странностей, таких как запятые в полях, завернутые кавычками. Я представил образец кода в своем ответе здесь: http://stackoverflow.com/questions/314384/parse-csv-file-using-gawk/33380831#33380831 –

13

Python - отличный выбор. Модуль csv упрощает чтение и запись CSV-файлов (даже версия Microsoft, «идиосинкразированная»), и синтаксис Python - это легкий ветерок.

Я бы рекомендовал против Perl, если вы придете к нему свежий. Хотя Perl, безусловно, мощный и быстрый, он часто загадочен до непонятного для непосвященных.

+1

И вот ссылка: http://docs.python.org /library/csv.html – pr1001

+0

http://docs.python.org/library/csv.html –

+0

Я ценю этот ответ, однако, спросив об этом: http://stackoverflow.com/questions/3339694/python-csv-getting -subset, я не уверен, что python станет моим первым выбором. R, вероятно, лучше для меня, но это займет слишком много времени, чтобы узнать, вероятно, –

2

Это зависит от того, что вы хотите сделать с файлами.

Кривая обучения Python менее крутая, чем R. Тем не менее, R имеет кучу встроенных функций, которые очень хорошо подходят для работы с файлами .csv, особенно в статистических целях.

Edit: Я рекомендую R над Python для этой цели в одиночку, если только потому, что основные операции (чтение файлов, сбросив строк, удаление столбцов и т.д.) немного быстрее писать в R, чем в Python.

1

PowerShell имеет встроенный CSV import

Синтаксис некрасиво, как смерть, но он предназначен, чтобы быть полезным для администраторов больше, чем для программистов. - так что кто знает, может понравиться.

Предполагается, что это будет быстрый язык, который подходит для начинающих и начинающих, к лучшему и худшему.

3

Вы знаете VBA? Почему не Visual Basic 2008/2010, или, возможно, C#? Я уверен, что языки, такие как python и ruby, будут относительно легкими для работы, но вы уже привыкли к ".NET способ»делать вещи, так что имеет смысл продолжать работать с ними, вместо того, чтобы учиться совершенно новую вещь только для этой работы

Использование C#:..

var csvlines = File.ReadAllLines("file.csv"); 

var query = from csvline in csvlines 
      let data = csvline.Split(',') 
      select new 
      { 
       ID = data[0], 
       FirstName = data[1], 
       LastName = data[2], 
       Email = data[3] 
      }; 
  1. .NET: Linq to CSV library
  2. .NET: Read CSV with LINQ
  3. Python: Read CSV file
+0

Является ли VBA действительно похожим на .NET? В прошлый раз, когда я его использовал, я обнаружил, что это совершенно другое. –

+3

типичные файлы CVS не так просто разобрать как split (',') –

+2

Я настоятельно рекомендую не делать этого. Проблема с CSV на первый взгляд очень проста. Все чувствуют, что должны писать собственный парсер. НЕ УДАЛИТЬСЯ с цитированием предметов или тому подобного. Люди пишут библиотеки, которые разделяют 100 пользователей. Они почти всегда будут более стабильными, чем что-то написанное. Сказав, что я не думаю, что VB является неправильным способом обойти это, если вы знаете VBA. Будьте осторожны, хотя VBA намного ближе к VB Classic, чем VB.net – Wes

2

Я бы дал awk. Если вы используете окна, вы можете получить awk через cygwin utilities.

+1

awk - правильный выбор для CSV! – dwo

+0

Dang. Ударьте мой ответ за секунды. Однако, поскольку это тот же ответ, вы, очевидно, тоже гений. +1 :-) –

+0

Хех. Видимо, кто-то не согласен; У меня есть понижение по этому поводу. Но спасибо :-) –

2

Это не может быть чьим-либо популярным языком дю-Жур, но так как CSV файлы линия-ориентированных и разделение на поля, имея дело с ними только о совершенном применении для awk. Он был создан для обработки текстовых текстовых данных, которые можно разделить на поля.

Большинство других языков, которые будут рекогносцироваться, будут гораздо более универсальными, поэтому в них будет намного больше, что не обязательно применимо для обработки текстовых данных с линейной ориентацией.

+1

Если awk не был обновлен недавно (последние 10 лет!), Он не обрабатывает сложные части формата CSV, такие как запятые и/или кавычки в поле, например. поле адреса содержит «DunRomin», шоссе 987, Walla Walla, WA' - вам нужно будет написать или скопировать код, чтобы сделать это. –

+0

@John Machin - Да, это правда, что вам нужно немного поработать, чтобы получить awk для поддержки полей с запятыми в них. Вы абсолютно правы, что является недостатком. Если у ваших данных могут быть такие вещи, вы должны это учитывать. Тем не менее, ни одна из моих работ в CSV не потребовала этого. Если вы контролируете то, что генерирует ввод, его обычно легко избегают. –

3

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

Python имеет модуль чтения/записи csv, о котором говорили другие. Существуют также сторонние модули xlrd (читает) и xlwt (пишет) модули для файлов XLS. См. the tutorial on this site.

+0

R имеет также поддержку файлов Excel – nico

+0

@nico: The R docs говорят: «Первый совет заключается в том, чтобы избежать этого, если это возможно!» [почему?], а затем перечислить список пакетов сторонних производителей ...не звучит как «имеет поддержку» для меня :) –

+0

что делать? Использование Excel для статистики? Я полностью согласен с этим (см., Например, yalta.etu.edu.tr/yalta-excel2007-statistical.pdf www.oci.uzh.ch/efiles/CHE103/chartjunk_excel_CSDA.pdf www.pages.drexel.edu/~bdm25/ excel2007.pdf): D В любом случае, R сильно зависит от сообщества, тот факт, что есть несколько пакетов, которые позволяют вам открывать файлы Excel/манипулировать ими и даже выполнять R-код из Excel, как «имеет поддержку» для меня! – nico

Смежные вопросы