Dies ist eine etwas seltsame Anfrage, aber ich bin auf der Suche nach einem Weg zu schreiben, eine Liste in Datei und Lesen Sie Sie wieder ein anderes mal.
Ich habe keine Möglichkeit, ein remake der Listen, so dass Sie korrekt gebildet/formatiert, wie das Beispiel unten zeigt.
Meine Listen Daten wie die folgenden:
test
data
here
this
is one
group :)
test
data
here
this
is another
group :)
Wenn Sie es nicht brauchen, um menschlich-lesbare/editierbare, die einfachste Lösung ist, um Sie nur
pickle
.Schreiben:
Lesen:
Wenn Sie tun brauchen Sie für Menschen lesbar, brauchen wir mehr Informationen.
Wenn
my_list
ist garantiert eine Liste von strings mit keine eingebetteten Zeilenumbrüche, nur schreiben (eine pro Zeile):Wenn Sie Unicode-strings statt byte-strings sind, werden Sie wollen, um
encode
Sie. (Oder, noch schlimmer, wenn Sie sind byte-strings, allerdings nicht unbedingt in die gleiche Codierung wie Ihr system der Standardeinstellung).Wenn Sie haben könnte, Zeilenumbrüche, oder nicht-druckbare Zeichen, etc., können Sie entkommen oder zu zitieren. Python hat eine Vielzahl von verschiedenen Arten von Flucht gebaut in der stdlib.
Verwenden wir
unicode-escape
hier lösen beide der oben genannten Probleme auf einmal:Können Sie auch die 3.x-style-Lösung in 2.x mit der
codecs
Modul oder dieio
Modul:** TOOWTDI, so ist das eine offensichtliche Art und Weise? Es hängt davon ab... Für die kurze version: wenn Sie brauchen, um die Arbeit mit Python-Versionen vor 2.6, nutzen
codecs
; wenn nicht, verwenden Sieio
.str
undbytes
sind die gleichen Typs, die den Unterschied zwischen binären Dateien und text Dateien ist nur newline übersetzung. In Python 3,str
undunicode
sind die gleichen Typs, die den Unterschied zwischen binären Dateien und text Dateien, dass text-Dateien automatisch verschlüsseln und entschlüsseln für Sie. (Sie erhalten 3.x-wie Verhalten wenn 2.x wenn Sie vorsichtig sind, einschließlich 3.x-Stil text-Dateien mitio.open
, aber der Fragesteller machte das nicht.)open(the_filename, 'w', encoding='unicode-escape')
und lassen das file-Objekt, kümmern sich um die Kodierung für Sie. (Sie können das gleiche tun, in 2.x mit entwederio.open
oder diecodecs
Modul, aber ich denke, dass explizite Codierung macht es leichter zu sehen, was in 2.x, wo die Gefahr der Vermischung bytes und text ist viel höher.)\n
dazwischen. Ändernf.write((s + u'\n').encode('unicode-escape'))
zuf.write(s.encode('unicode-escape') + u'\n')
behebt es.So lange, wie Sie Ihre Datei hat eine konsistente Formatierung (also Zeilenumbrüche), das ist einfach mit nur grundlegende Datei-E /a-und string-Operationen:
Dass Ihre Daten speichert die Datei als eine Liste der Elemente, eines pro Zeile. Dann legen Sie Sie in eine Datei, Sie würde das Gegenteil tun:
Hoffentlich passt das, was Sie suchen.
data
wir reden nicht Komplex ist, IMHO ist es besser, Rollen Sie Ihre eigenen parser wie in diesem ans.Definieren wir nun eine erste Liste:
Können Sie direkt schreiben Sie Ihre Liste in eine Datei:
Lesen Sie Ihre Liste von text-Datei zuerst liest du die Datei und speichern Sie in einer Variablen:
Den Typ der variable
lst
ist natürlich string. Sie können zu konvertieren string in ein array miteval
Funktion.