2017-07-16 208 views
0

我已經嘗試了這幾種方法,但仍然無法使其工作,我猜測它是與其中一個文件中的特殊字符有關的。使用paste工具,很簡單。將兩個.csv文件並排合併在一起

​​

但是我還沒有訪問任何Linux相關的任務。

我的環境是Windows 7,安裝了Python 2.7(No Pandas)和Perl草莓。

我需要並排合併2個(或更多)csv文件。這些文件將始終具有相同的行數。

我試過這個使用python,它沒有工作。

Join txt files side by side in python

我已經試過這一點使用批處理和它沒有工作。

Merge csv file side by side using batch file

test1.csv包含

python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ 
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ 
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ 

test2.csv包含

123456.pdf 
123457.pdf 
124587.pdf 

我想要的輸出是什麼(Test3.csv)是含有一個製表符分隔的文件;

python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ 123456.pdf 
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ 123457.pdf 
python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ 124587.pdf 

任何幫助,非常感謝。

謝謝。

+1

你說你已經嘗試了各種東西 - 你遇到了什麼問題?請張貼您當前的代碼並告訴我們您收到了什麼結果或錯誤。 –

+1

你試過了什麼?如果您不顯示我們,我們無法告訴您您做錯了什麼。 – ikegami

+1

你怎麼不知道你在用什麼語言?請修復標籤。 – ikegami

回答

1

下面是使用zip的解決方案。您可能需要玩弄根據您的CSV文件

with open('test1.csv', 'rb') as t1, open('test2.csv', 'rb') as t2, open('output.csv', 'wb') as output: 
    r1 = csv.reader(t1, delimiter=' ') 
    r2 = csv.reader(t2, delimiter=' ') 
    w = csv.writer(output, delimiter=' ') 
    for a, b in zip(r1, r2): 
      w.writerow(a + b) 
0

這裏的確切設置的分隔符和引號字符是一種替代和使用pyexcel更直觀的解決方案:

>>> import pyexcel as p 
>>> left=p.get_sheet(file_name='left.csv') 
>>> left 
left.csv: 
+------------------------------------------------------------+ 
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 
+------------------------------------------------------------+ 
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 
+------------------------------------------------------------+ 
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 
+------------------------------------------------------------+ 
>>> right=p.get_sheet(file_name='right.csv') 
>>> right 
right.csv: 
+------------+ 
| 123456.pdf | 
+------------+ 
| 123457.pdf | 
+------------+ 
| 124587.pdf | 
+------------+ 
>>> left.column+=right # that's it 
>>> left 
left.csv: 
+------------------------------------------------------------+------------+ 
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 123456.pdf | 
+------------------------------------------------------------+------------+ 
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 123457.pdf | 
+------------------------------------------------------------+------------+ 
| python pdf2txt.py -o C:\Users\user\Desktop\Folder\Folder2\ | 124587.pdf | 
+------------------------------------------------------------+------------+ 
>>> left.save_as('merged.csv') # save it 

海量數據集,以上解決方案將會很慢或無法完成。因此,這裏是處理大量數據集的代碼:

>>> import pyexcel as p 
>>> left=p.iget_array(file_name='left.csv') 
>>> right=p.iget_array(file_name='right.csv') 
>>> p.isave_as(array=(a+b for a, b in zip(left, right)), dest_file_name='merged.csv') 
>>> p.free_resources()