xlrd öffnen pfad - Erstellen Sie eine CSV-Datei mit Werten aus einer Python-Liste
Ich versuche, eine CSV-Datei mit den Werten aus einer Python-Liste zu erstellen. Wenn ich die Werte in der Liste drucke, sind sie alle Unicode (?), Dh sie sehen ungefähr so aus
[u'value 1', u'value 2', ...]
Wenn ich die Werte in der Liste for v in mylist: print v
dh for v in mylist: print v
scheinen sie for v in mylist: print v
Text zu sein.
Und ich kann ein ,
zwischen jedem mit print ','.join(mylist)
Und ich kann in eine Datei ausgeben, dh
myfile = open(...)
print >>myfile, ','.join(mylist)
Aber ich möchte in eine CSV ausgeben und Trennzeichen um die Werte in der Liste haben
"value 1", "value 2", ...
Ich finde keine einfache Möglichkeit, die Trennzeichen in die Formatierung einzufügen, zB habe ich die join
Anweisung durchprobiert. Wie kann ich das machen?
Die beste Option, die ich gefunden habe, war die Verwendung von savetxt
aus dem numpy
Modul :
import numpy as np
np.savetxt("file_name.csv", data1, delimiter=",", fmt='%s', header=header)
Falls Sie mehrere Listen haben, die gestapelt werden müssen
np.savetxt("file_name.csv", np.column_stack((data1, data2)), delimiter=",", fmt='%s', header=header)
Sie könnten in diesem Fall die Methode string.join verwenden.
Teilen Sie einige Zeilen zur besseren Übersicht auf - hier ist eine interaktive Sitzung
>>> a = ['a','b','c']
>>> first = '", "'.join(a)
>>> second = '"%s"' % first
>>> print second
"a", "b", "c"
Oder als einzelne Zeile
>>> print ('"%s"') % '", "'.join(a)
"a", "b", "c"
Sie haben jedoch möglicherweise ein Problem, wenn Ihre Strings eingebettete Anführungszeichen enthalten. Wenn dies der Fall ist, müssen Sie entscheiden, wie Sie ihnen entkommen können.
Das docs.python.org/library/csv.html kann all dies für Sie erledigen, so dass Sie zwischen verschiedenen Anführungsoptionen wählen können (alle Felder, nur Felder mit Anführungszeichen und Trennzeichen, nur nicht numerische Felder usw.) und wie Sie die Steuerzeichen (doppelte Anführungszeichen oder Escape-Strings). Wenn Ihre Werte einfach sind, ist string.join wahrscheinlich in Ordnung, aber wenn Sie viele Randfälle verwalten müssen, verwenden Sie das verfügbare Modul.
Hier ist eine andere Lösung, die das csv
Modul nicht benötigt.
print ', '.join(['"'+i+'"' for i in myList])
Beispiel:
>>> myList = [u'value 1', u'value 2', u'value 3']
>>> print ', '.join(['"'+i+'"' for i in myList])
"value 1", "value 2", "value 3"
Wenn jedoch die ursprüngliche Liste einige enthält, werden sie nicht maskiert. Wenn es erforderlich ist, ist es möglich, eine Funktion aufzurufen, um so zu entkommen:
print ', '.join(['"'+myFunction(i)+'"' for i in myList])
Jupyter Notizbuch
Sagen wir, deine Liste ist A
Dann können Sie die folgende Anzeige codieren, die Sie als CSV-Datei haben werden (nur Spalten!)
R="\n".join(A)
f = open('Columns.csv','w')
f.write(R)
f.close()