2017-07-16 9 views
0

Ich habe versucht, dies ein paar Möglichkeiten, aber immer noch nicht funktionieren, ich vermute, es ist etwas mit den Sonderzeichen in einer der Dateien zu tun. Mit dem paste Tool ist es einfach.Zwei .csv-Dateien nebeneinander verschmelzen

paste test1.csv test2.csv. > Test3.csv in Linux. 

Aber ich habe keinen Zugang zu irgendetwas Linux für diese Aufgabe.

Meine Umgebung ist Windows 7, mit Python 2.7 (No Pandas) und Perl Strawberry installiert.

Ich muss 2 (oder mehr) csv-Dateien nebeneinander zusammenführen. Die Dateien haben immer die gleiche Anzahl von Zeilen.

Ich habe dies mit Python versucht und es hat nicht funktioniert.

Join txt files side by side in python

Ich habe dies mit Batch versucht und es hat nicht funktioniert.

Merge csv file side by side using batch file.

test1.csv enthält

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 enthält

123456.pdf 
123457.pdf 
124587.pdf 

Was ich die Ausgabe (Test3.csv) sein wollen, ist eine Registerkarte getrennte Datei enthält;

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 

Jede Hilfe wird sehr geschätzt.

danke.

+1

Sie sagten, Sie haben schon verschiedene Sachen ausprobiert - welches Problem ist Ihnen begegnet? Bitte posten Sie Ihren aktuellen Code und teilen Sie uns mit, welches Ergebnis oder Fehler Sie erhalten. –

+1

Was hast du probiert? Wir können Ihnen nicht sagen, was Sie falsch gemacht haben, wenn Sie uns nicht zeigen. – ikegami

+1

Woher wissen Sie nicht, welche Sprache Sie verwenden? Bitte repariere die Tags. – ikegami

Antwort

1

Hier ist eine Lösung mit zip. Sie müssen möglicherweise mit den Trennzeichen und Zitat Zeichen abhängig von der genauen Konfiguration Ihrer CSV-Dateien

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

Hier ist eine Alternative und intuitive Lösung mit pyexcel spielen, um:

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

Für große Datenmengen , obige Lösung wird langsam oder unmöglich zu vervollständigen sein. Daher ist hier der Code, um mit riesigen Datensätzen umzugehen: