2016-10-16 3 views
0

iam mit diesem Code db-Tabelle csv-Datei zu konvertieren, wird die Umwandlung zu csv in aber anstatt neue Linie/Linie breck seine doppelte Anführungszeichen verwenden, kann mir jemand helfenPython csv neue Linie

import MySQLdb 
import csv 
conn = MySQLdb.connect(user='root', db='users', host='localhost') 
cursor = conn.cursor() 
cursor.execute('SELECT * FROM users.newusers') 
ver = cursor.fetchall() 
ver1 = [] 
for ve in ver: 
    ve = str(ve).replace("', '","|").replace(", '","|").replace(","," ").replace(" "," ").replace("|",",") 
    ver1.append(ve) 
print ver1 
csv_file = open('filename', 'wb') 
writer = csv.writer(csv_file) 
writer.writerow(ver1)  csv_file.close()                     

Strom Ausgabe

"(114L,New,9180971675,Ravi Raju,RAJRAVI,National,#N.A,No,No,No,#N.A,OS40,005056BB0803,192.168.0.1,no,yes')","(115L,New,9180971676,Rajendran Mohan,rajemoh,National,#N.A,No,No,No,#N.A,OS40,005056BB0803,192.168.10.10,no,yes')" 

aus

Abfragen
114L,New,9180971675,Ravi Raju,RAJRAVI,National,#N.A,No,No,No,#N.A,OS40,005056BB0803,192.168.0.1,no,yes 


115L,New,9180971676,Rajendran Mohan,rajemoh,National,#N.A,No,No,No,#N.A,OS40,005056BB0803,192.168.10.10,no,yes 
+0

"ver" ist eine Liste von Tupeln und dann rufen Sie 'str()' darauf in 'str (ve)' auf. Ich kann nicht all deinen 'replace' Regeln folgen, aber _mybe_ kannst du einfach' ve = str (ve) ... 'entfernen und einfach 'ver1.append ([str (item) für item in ve])' in deine einfügen 'for' loop und dann fügen Sie alle' replace' Regeln, die Sie noch benötigen, in das Listenverständnis ein. – roganjosh

+0

nein das funktioniert auch nicht – mikegray

+0

Haben Sie einen Fehler? – roganjosh

Antwort

0

SQL erwartet wird zurückkehren Ergebnisse zu Ihnen in einer Liste von Tupeln von fetchall(). In Ihrem aktuellen Ansatz durchlaufen Sie diese Liste, aber rufen Sie für jedes Tupel str() auf, wodurch das gesamte Tupel in seine Zeichenfolgendarstellung konvertiert wird.

Stattdessen können Sie ein Listenverständnis für jedes Tupel verwenden, um es in ein verschachteltes Listenformat zu übernehmen und Ihre replace()-Operationen anzuwenden.

for ve in ver: 
    ver1.append([str(item).replace(<something>) for item in ve]) 

Im letzten Schritt verwenden Sie csv.writerow(), die innerhalb einer Schleife for verwendet werden soll. Wenn Ihre Liste im Formular [[row1], [row2]] verschachtelt ist, können Sie dies einfach in Writerow s ändern. Es empfiehlt sich außerdem, den Kontextmanager with für die Verarbeitung von Dateien zu verwenden, da dies die Datei automatisch schließt, sobald der Vorgang abgeschlossen ist.

with open('filename.csv', 'wb') as csv_file: 
    writer = csv.writer(csv_file) 
    writer.writerows(ver1)