2016-03-30 14 views
0

hier getrennt mehrere Zeilen in einzelne Zelle verbinden mein Problem ist:Wie in csv durch Komma Python

in meiner CSV-Datei, ich nur eine Spalte haben und mehrere Zeilen Telefonnummern enthält.

a 
1 222 
2 333 
3 444 
4 555 

, was ich will, ist sie in eine Zeichenfolge verschmelzen und trennen durch Komma, zB:

a 
1 222,333,444,555 

Der Code, den ich im Augenblick verwende ist:

import csv 

b = open('test.csv', 'wb') 
a = csv.writer(b) 

s = '' 
with open ("book2.csv", "rb") as annotate: 
    for col in annotate: 

     ann = col.lower().split(",") 
     s += ann[0] + ',' 
s = s[:-1] # Remove last comma 

a.writerow([s]) 
b.close() 

was ich von Dies ist

a 
1 222, 
    333, 
    444, 
    555 

Die ganze Nummer s sind jetzt in einer Zelle (gut), aber sie sind nicht in einer Zeile (es gibt/r/n hinter jeder Telefonnummer, deshalb denke ich, dass sie deshalb nicht in einer Zeile sind). Vielen Dank im Voraus!

Antwort

-1
import csv 

b = open('test.csv', 'wb') 
a = csv.writer(b) 

s = '' 
with open ("book2.csv", "rb") as annotate: 
    for col in annotate: 

     ann = col.lower().strip('\n').split(",") 
     s += ann[0] + ',' 
s = s[:-1] # Remove last comma 

a.writerow([s]) 
b.close() 
+0

Vielen Dank! Das wollte ich. Also muss ich nur das \ n für jeden Gegenstand entfernen. – Kyle

0

Sie verwenden die csv Modul, aber ignorieren csv.reader. Es kümmert sich um alle die Analyse für Sie:

#!python2 
import csv 
with open('book2.csv','rb') as inf, open('test.csv','wb') as outf: 
    r = csv.reader(inf) 
    w = csv.writer(outf) 
    L = [row for row in r] # Read all lines as list of lists. 
    L = zip(*L)   # transpose all the lines. 
    w.writerows(L)   # Write them all back out. 

Eingang:

222 
333 
444 
555 

Ausgabe in der CSV-Datei:

222,333,444,555 

EDIT: ich jetzt sehen, dass Sie die Daten wollen in Excel, um in einer einzelnen Zelle zu sein. Die oben wird es in einer Reihe von vier Zellen setzen:

enter image description here

Im Folgenden wird eine einzelne Zelle schreiben:

#!python2 
import csv 
with open('book2.csv') as inf, open('test.csv','wb') as outf: 
    w = csv.writer(outf) 
    data = inf.read().splitlines() 
    w.writerow([','.join(data)]) 

Ausgabe in der CSV-Datei:

"222,333,444,555" 

Ausgabe in Excel:

enter image description here

+0

Hallo Ich verwende 2 Python, aber ich habe diese statt: zwei Reihen. Erste Reihe hat nur die erste Telefonnummer, dh 222 zweite Reihe hat die anderen 3 Nummern 333 444 555, aber sie sind nicht in einer Zelle und nicht konnte ich sehen, nicht die Kommas – Kyle

+0

@ Kyle, Sie den Code genau kopiert? Mit den exakten Eingabedaten angezeigt? –

+0

Ja, ich habe genau das, was Ihr Code sagt – Kyle