string am ende jeden Zeile hinzufügen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hth11
User
Beiträge: 5
Registriert: Mittwoch 12. September 2018, 16:23

Samstag 17. November 2018, 00:36

Ich habe ich möchte folgendes programmieren:
Ich habe 6, datei sehen wie folgt:
Datei 1:
a;b;c
d;e;f;
…….

Datei 2 bis 6 sehen gleich aus wie Datei 1. Nun möchte ich gern, dass das ``c`` aus Datei 2 bis 6 am Ende jeder Zeile hinzufügen.
Das heißt ende möchte ich gern einer Datei wie folgt haben:
a;b;c;c2; c3; c4; c5; c6
d;e;f;c2; c3; c4; c5; c6
…………………..

A,b,c,d,e,f stehen für irgendeinem Zahl.
Bis jetzt habe ich nur geschafft für Datei 1 und 2 wie folgt:

with open(textpfad1x, 'r') as fin, open(textpfadall, 'r') as fin1, open(textpfadall1,'w') as fout:
for line, line1 in zip(fin,fin1):
a = str(line)
a1 = str(line1)
lange1 = len(a1)
#print(a)
#print(a1)
if (zh >= 22 ) and (lange1>1) :
a1= a1.replace('\n',';')
a2= (a1+'\n')
c = a.split(';')
#print(len(c))
cc = a1+c[2]
#print(cc)
#new = str(c[2])
fout.write(cc)
zh=zh+1
print(zh)
fin.close()
fout.close()
fin1.close()
Sirius3
User
Beiträge: 8805
Registriert: Sonntag 21. Oktober 2012, 17:20

Samstag 17. November 2018, 07:16

@hth11: wenn es sich um csv-Dateien mit dem Delimiter ; handelt, solltest Du das csv-Modul zum Lesen und Schreiben benutzen.
Der Programmabschnitt ist viel zu weit eingerückt. Bei einer so tiefen Verschachtelung solltest Du unbedingt den Code in Funktionen aufteilen, und damit die Ebenentiefe verringern.
Bei ›textpfad1x‹, ›textpfadall‹ und ›textpfadall1‹ fragt sich der Leser, was wohl 1x bedeuten mag, und was der Unterschied zwischen all und all1 ist. Zumindest sollte klar sein, bei was es sich um Eingabedateinamen und bei was um Ausgabedateinamen handelt, denn eine Verwechslung könnte schlimme Folgen haben.
›line‹ und ›line1‹ sind schon Strings, ein weiteres Umwandeln mit str ist unsinnig. ›line‹ ist schon ein sehr generischer Name, mit ›a‹ kann der Leser aber gar nichts mehr verbinden. Vermeide einbuchstabige Variablennamen und Abkürzungen.
In Python braucht es keine Klammern um Bedingungen und wenn wenn die Länge nur hier gebraucht wird, braucht es dafür auch keine eigene Variable. ›a2‹ führt die lustige Nummerierung weiter, die Zeile hat wieder zu viele Klammern und der Wert wird nie benutzt.
Wenn man das with-Statement benutzt, muß man die Dateien nicht mehr explizit schließen.

So einfach, wie Du das Dateiformat beschreibst, scheint es nicht zu sein, da Du die ersten 22 Zeilen und alle Leerzeilen ignorierst.

Wenn die Daten komplett in den Hauptspeicher passen, wäre die einfachste Möglichkeit, eine Funktion zu schreiben, die die erste Datei in eine Liste lädt, und eine weitere Funktion, die an jedes Element dieser Liste den passenden Inhalt einer weiteren Datei hängt. Diese kann dann in einer Schleife für die anderen 5 Dateien aufgerufen werden.
Zum Schluß schreibst Du die Liste in die Ausgabedatei.
Antworten