2014-11-14 132 views
-4

對於數據挖掘項目,我需要將80個製表符分隔的文件(每個100 MB)轉換爲CSV文件。任何人都知道一些在這種情況下可以方便使用的工具。將分隔符分隔爲CSV

+0

有很多的工具來做到這一點。您使用什麼操作系統? – jmunsch 2014-11-14 20:49:36

+0

感謝您的回覆,我正在使用Windows 8.1。或者,如果在其他操作系統中有任何方便的工具,我可以切換。 – shubham90 2014-11-14 20:53:57

+0

如果你不熟悉任何腳本語言,我會建議Open Office Calc:http://stackoverflow.com/questions/2549800/how-to-convert-tsv-to-csv-using-openoffice只要文件沒有超過限制?:https://wiki.openoffice.org/wiki/Documentation/FAQ/Calc/Miscellaneous/What%27s_the_maximum_number_of_rows_and_cells_for_a_spreadsheet_file%3F或者嘗試安裝python並使用'csv'模塊。 – jmunsch 2014-11-14 21:11:38

回答

0

下載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

的基本思想: 如果文件很大,通過閱讀這些線線。

0

瞭解您的基本工具。

在任何的UNIX/Linux/OSX系統中,每個下面的命令應該做的伎倆:

sed -i -e 's/\t/,/g' *.csv 
perl -i -p -e 's/\t/,/g' *.csv 

這些執行基本選項卡以逗號替換。如果您的數據包含帶有表格或逗號的列,或者爲您編寫文件名,他們將不會處理引用和轉義等內容。請注意,sedperl的語法非常相似...... -i就地編輯,-e執行命令,s///是正則表達式替換的語法。等

無論哪種方式,您的基本Unix工具這份工作是

  1. 極快(以下簡稱「流編輯器」 sed是很好的優化,低級別的C代碼)
  2. 方便(只是一些10按鍵!)
  3. 使用方便,一旦你學會的基礎知識(即閱讀手冊)