2013-04-26 12 views
5

Ich mag diesesWie kann ich Anführungszeichen in CSV-Schriftsteller entkommen in Python

for a in products: 
    mylist =[] 
    for h in headers['product']: 
     mylist.append(a.get(h)) 
     writer.writerow(mylist) 

Meine meine wenigen Felder Textfelder der CSV-Datei schreibe sind alle Zeichen wie ,"'\n oder irgendetwas anderes conatins kann. Was ist der sicherste Weg, das in der CSV-Datei zu schreiben. auch auch Datei ganzen Zahlen haben und schwimmt

+1

Dies funktioniert bereits, haben Sie tatsächlich ein Problem? – jamylak

+0

Es arbeitet derzeit, wusste aber nicht whwther es wird auf alle Arten von seltsamen Daten funktionieren a, Leute werden eintreten. sollte ich QUOTE_ALL, MINIMAL, NUMMERN ODER WAS verwenden – user2294401

Antwort

6

Sie QUOTE_ALL zitierte Option verwenden sollten:

import StringIO 
import csv 

row = ["AAA \n BBB ,222 \n CCC;DDD \" EEE ' FFF 111"] 

output = StringIO.StringIO() 
wr = csv.writer(output, quoting=csv.QUOTE_ALL) 
wr.writerow(row) 

# Test: 
contents = output.getvalue() 
parsedRow = list(csv.reader([contents]))[0] 

if parsedRow == row: print "BINGO!" 
0

csv.QUOTE_ALL wird gewährleistet, dass alle Ihre Einträge wie so zitiert werden: "value1","value2","value3" während csv verwenden. QUOTE_NONE gibt Ihnen: `value1, value2, value3

Außerdem werden dadurch alle Ihre Zitate in den Einträgen wie folgt in doppelte Anführungszeichen gesetzt. "somedata"user"somemoredata wird sich "somedata""user""somemoredata in Ihrer schriftlichen .csv

Wenn Sie jedoch Ihre QuoteChar auf den umgekehrten Schrägstrich (zum Beispiel) gesetzt, Ihren Eintrag als \“für alle Zitate zurück.

create=csv.writer(open("test.csv","wb"),quoting=csv.QUOTE_NONEescapechar='\\', quotechar='"') 
for element in file: 
    create.writerow(element) 

und die Das vorherige Beispiel wird somedata\"user\"somemoredata was sauber ist Es wird auch alle Kommas, die Sie in Ihren Elementen auf die gleiche Weise haben

Verwandte Themen