String nach Excel

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
ida1234
User
Beiträge: 2
Registriert: Freitag 18. März 2022, 08:35

Hallo zusammen

ich möchte eine Textdatei nach einem String (position 1 und position 2) durchsuchen.
Dann soll die Zeile unter diesem String kopiert werden und in eine Spalte einer Excel-Liste eingefügt werden

Die Textdatei sieht im folgenden so ähnlich aus.

position1
regal 2

position 2
Gebäude a

position 1
regal 3

position 2
Gebäude c

Excel soll dann so aussehen:

position 1 position 2
regal 2 Gebäude a
regal 1 Gebäude c

Es gibt immer Position 1 und Position 2 , die zueinander in Verbindung stehen und deshalb auch in einer Zeile sein sollen.


Hat jemand Idee. Ich bin überhaupt gar kein Programmierer und will mir eigentlich nur Arbeit ersparen. Wie ich das Skript zum laufen bringe, weiß ich allerdings. Habe auch nur die StandardModule

Danke schon mal im Voraus
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

Ein guter Einstieg in Python ist das offizielle Tutorial.
Du wirst dich mit den typischen Datenstrukturen vertraut machen müssen. Ebenso mit Schleifen.
Excel-Dateien wirst du mit den Modulen aus der Standardbibliothek nicht schreiben können. "Eingefügt" klint auch so, als wäre bereits eine Excel-Datei vorhanden, in die zusätzliche Daten eingetragen werden sollen. Lesen von Excel-Dateien geht mit den Modulen aus der Standardbibliothek ebenfalls nicht.
Was geht: CSV-Dateien lesen und schreiben mit dem csv-Modul aus der Bibliothek. Das kommt dem wohl am nächsten.
ida1234
User
Beiträge: 2
Registriert: Freitag 18. März 2022, 08:35

Hallo nochmal
habe mal was gebastelt. Aber nicht lachen!

import xlsxwriter

workbook=xlsxwriter.Workbook('abc.xlsx')
worksheet=workbook.add_worksheet()

worksheet.write('A1', 'Position')
worksheet.write('B1', Gebäude')
worksheet.write('C1', 'Regal')

InputText='Position'
InputText2='Gebäude'
InputText3='Regal'

with open('Beispiel.txt',"r") as infile
for line in infile
if InputText in line:
print(line, end='')
print((next(infile),end=' ')
result= print((next(infile),end=' ')
worksheet.write('A2, result)
if InputText2 in line:
print(line, end='')
print((next(infile),end=' ')
result= print((next(infile),end=' ')
worksheet.write('B2, result)
if InputText3 in line:
print(line, end='')
print((next(infile),end=' ')
result= print((next(infile),end=' ')
worksheet.write('C2, result)

row +=1
infile.close()
workbook.close()



Was klappt
Er erstellt das excel file und schreibt die Spaltenbeschriftung dazu
ER findet den String und gibt die jeweilige Zeile aus im Shell
Er geht eine Zeile nach dem gefundenen String runter und gibt auch den Text hier zu aus in shell
Das printen auf shell klappt auch wunderbar. Allerdings halt alles untendrunter

Position (nach diesem String sucht er, gibt die Zeile aus
Text dazu (nach dem Finden von Position geht er zur nächsten zeile und gibt diese ebenfalls aus-->klappt)
Gebäude (nach diesem String sucht er, gibt ihn aus)
Text Regal
Text dazu



Was nicht klappt:
Er schreibt nur die Spaltenbeschriftung in die Excel Tabelle, aber nicht die Werte, also kein result. Und ich habe jetzt wirklich schon viel ausprobiert, gegoogelt und bitte um Gnade. Was muss ich tun, damit die Werte (die results) in die Excel Tabelle geschrieben werden. Und zwar so, dass eine Zeile nach der anderen gefüllt wird. Irgendwie dann noch A1 +1 oder so?
Also in der Textdatei sind einige Strings Position, Gebäude, Raum. Und er soll die Texte, die sich in der Zeile danach befinden, in die ExcelListe schreiben

Excel soll dann so aussehen:

Position Gebäude Regal (das sind die Spaltenbeschriftungen)
Text dazu Text dazu Text dazu
Text dazu Text dazu usw.

Viele Grüße und wenn jemand idee hat, wie ich das Result in die ExcelListe schippere, bitte melden

Heiner
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Da klappt erstmal nicht viel, weil die Einrückungen komplett vermurkst sind. Eingerückt wird immer mit 4 Leerzeichen pro Ebene.
Du versuchst den Rückgabewert von `print` nach Excel zu schreiben, der ist aber immer None.
Das Inputfile scheint auch nicht dem Beispiel aus Deinem ersten Beitrag zu entsprechen.
`row` wird nicht definiert und auch nirgends verwendet, spätestens an der Stelle steigt das Programm also mit einem NameError aus.

Das nächste mal bitte den wirklichen Code posten und zwar in code-Tags </>. Und am besten dazu ein Beispiel, was in der Text-Datei wirklich steht.
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Das klappt noch viel fundamentaler nicht, weil da an mehreren Stellen Zeichenketten nicht ordentlich in Anführungszeichen eingefasst sind, und das deshalb nicht mal am Compiler vorbei kommt.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten