2016-12-08 4 views
-1

Angenommen, ich habe eine Liste formatiert so etwas wie: a = [a, 2, b, 3, c, 4, d, 3] und ich möchte in jede Datei schreiben, die zu erstellen erlaubt hochgestellten Indizes, wie:Schreiben in Dateien (Python)

a^2
b^3
c^4

und so weiter. Auf welche Art und Weise kann dies geschehen? (Die Indizes müssen korrekt formatiert sein, wie die tatsächlichen Indizes).

+0

Ich würde vorschlagen, diese Liste in zwei Teile zu brechen. Vor^('vor = [a, b, c]') und After^('nach = [2,3,4]'). Verwenden Sie dann einfach die 'csv'-Bibliothek, um jedes Listenindexelement in eine Zeile zu schreiben, wobei'^'zwischen den einzelnen Listenelementen hinzugefügt wird. (Nur eine allgemeine Idee für einen Start). – ralston

+0

Die Ausgabe erfolgt standardmäßig im Standardzeichensatz. In der Regel müssen Sie eine Berichtsbibliothek/ein Berichtsmodul verwenden, wenn Sie eine formatierte Ausgabe mit Verschönerung, verschiedenen Schriftarten, Tabellen oder Absätzen usw. benötigen. Tiefgestellt und hochgestellt fallen in dieselbe Kategorie. Spezifisch für hochgestellte, bitte sehen Sie, ob diese Antwort hilft. http://stackoverflow.com/questions/8651361/how-do-you-print-superscript-in-python –

Antwort

0

Es ist im Grunde nur eine Datei zu öffnen und dann aufeinanderfolgende Elemente mit einem ^ zu verbinden und dann alle diese mit einem Zeilenumbruch zu verbinden. Schließlich wird diese in eine Datei geschrieben und die Datei geschlossen wird:

with open('filename.txt', 'w') as file: 
    it = iter(a) 
    file.write('\n'.join('^'.join([first, str(second)]) for first, second in zip(it, it))) 

Wenn Sie nicht wollen, verwenden Sie verbindet und Comprehensions können Sie auch die Formatierung verwenden:

with open('filename.txt', 'w') as file: 
    template = '{}^{}\n' * (len(a) // 2) 
    formatted = template.format(*a) 
    file.write(formatted) 
1

So einfach wie diese:

files=open('write.txt','a') 
a = ['a','2','b','3','c','4','d','3'] 
count=0 
while count<len(a): 
    files.write(a[count]+'^'+a[count+1]+'\n') 
    count=count+2 
0

Hier ist eine einfache Möglichkeit, das zu erreichen. Ersetzen Sie die Druckanweisung durch Ihren Schreibvorgang und Sie sind in guter Verfassung.

Erste prep Ihre Liste, indem er in zwei Stücke Teilung:

a = ['a',2,'b',3,'c',4,'d',3] 
first = a[0::2] 
second = a[1::2] 

Als nächstes Schleife die erste Liste mit Aufzählungs und fügen Sie den zweiten Wert:

for i, f in enumerate(first): 
    super = '%s^%s' % (f, second[i]) 
    print(super) # replace with write function 

Ausgabe sieht wie folgt aus:

a^2

b^3

c^4

d^3

Dies sollte es einfach halten!

+0

'zip (erste, zweite)' könnte auch verwendet werden, um jede Indizierung unnötig. – MSeifert