Для проекта интеллектуального анализа данных мне нужно преобразовать 80 файлов с разделителями табуляции (по 100 МБ каждый) в файлы CSV. Кто-нибудь знает некоторые инструменты, которые могут быть удобны в этом случае.
Разделители табуляции в CSV
Ответы (2)
Загрузите Python: https://www.python.org/downloads/
Установите его.
И запустите скрипт, подобный следующему.
Сохраните следующее как convert_tsv_to_csv.py
или что-нибудь, оканчивающееся на .py
:
import csv
with open('C:\\path\to\file','r') as f:
tab_file = csv.reader(f, dialect=csv.excel_tab)
with open('C:\path\to\outfile.csv','w') as g:
comma_file = csv.writer(g, dialect=csv.excel)
for row in tab_file:
comma_file.writerow(row)
Измените пути и запустите его так: python convert_tsv_to_csv.py
Основная идея: если файлы большие, читайте их построчно.
Изучите основные инструменты.
В любой системе UNIX/Linux/OSX должны помочь следующие команды:
sed -i -e 's/\t/,/g' *.csv
perl -i -p -e 's/\t/,/g' *.csv
Они выполняют основную вкладку для замены запятой. Они не позаботятся о таких вещах, как цитирование и экранирование, если ваши данные содержат столбцы с табличными или запятыми, или изменение имени файла для вас! Обратите внимание, что синтаксис sed
и perl
очень похож... -i
— редактирование на месте, -e
— выполнение команды, s///
— синтаксис подстановки регулярных выражений. И т. д.
В любом случае, ваши основные инструменты Unix для этой работы:
- чрезвычайно быстрый ("потоковый редактор"
sed
хорошо оптимизирован, низкоуровневый код C) - удобно (всего каких-то 10 нажатий клавиш!)
- прост в использовании, как только вы изучите основы (т.е. прочитаете руководство)
csv
. - person jmunsch   schedule 15.11.2014