bestimmte Anzahl an Zeichen aus Zeile einlesen

  • Guten Tag,

    ich habe ein Python Problem, wo ich nicht mehr weiter weiß. Vielleicht hatte ja jemand schon ein ähnliches Problem oder hat einfach nur Lust mir weiterzuhelfen. Würde mich echt freuen.


    Ich habe eine Textdatei. Aus dieser Datei möchte ich die ersten 5 Zeilen jeweils einzeln einlesen und somit jede zeile in einer variable abspeichern. Diese Variablen werden später benutzt um diese schön auf einem Display auszugeben.

    Mein problem ist nun folgendes:

    ich möchte nun immer nur die ersten 40. Zeichen einer Zeile einlesen, da mehr eh nicht hinpasst und sonst die Formatierung zerstört wird. Es passen nämlich immer nur 20 Zeichen in eine Zeile. Da Zeile 1 oft lang ist, habe ich mir dort Abhilfe geschafft und eine Hilfszeile hinzugefügt, die mit ausgegeben wird.


    Wie kann ich immer nur maximal ersten 40. Zeichen einer Zeile einlesen?


    Würde mich über Hilfe sehr freuen.


    Lg

    Danjin

    Einmal editiert, zuletzt von Danjin ()

  • Beitrag von holgerble ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: leider verwechselt ().
  • PHP bei einem Python Problem wird ihm aber nicht so viel helfen denke ich mal ;)


    zu deinen Zeile x Variablen, warum schreibst du diese überhaupt heraus in einzelne Variablen und belässt diese nicht in einer Liste? Auch ist die Ausgabe anschließend damit deutlich kürzer.


    Python
    1. zeilen = ["Zeile 1", "Zeile 2", "Zeile 3"]
    2. for zeile in zeilen:
    3. print("Ich bin {}".format(zeile))
  • Hofei Vielen Dank, durch dich bin ich auf die Lösung gekommen.

    Ich musste lediglich die else Bedingung abändern, sodass er die ersten 20 Zeichen in zeile2 und die zeichen 20-40 in zeile2_hilfe hat.


    Hat sich somit erledigt.


    Vielen Dank ! :)


    EDIT:

    zu deinen Zeile x Variablen, warum schreibst du diese überhaupt heraus in einzelne Variablen und belässt diese nicht in einer Liste? Auch ist die Ausgabe anschließend damit deutlich kürzer.

    weil die hier genannten zeile1 -zeile5 in meinem richtigen Programm anders benannt sind und somit zum einfachen und schnellen Verständnis des codes Beitragen. Da die Variablen in "Kivy" als einzelne Buttons ausgegeben werden, müssen die eh alle einzeln "geprintet" werden, wobei das ja kein richtiges printen ist :D

  • Also wenn ich du wär würd ich wohl das ganze so gestalten: (Beitrag 4 gesehen?)

    Allerdings verwirrst du mich gerade im Ausgangspost, sollen es jetzt 20 oder 40 Zeichen sein?


    EDIT:

    In deinem Fall wird nur die 2. Zeile gekürzt, was ist wenn mal eine andere Zeile zu lang ist? Deswegen siehe mein Bsp.

  • Hofei bei Zeile 1,4 und 5 kann ich mir 100% sicher sein, dass diese nie länger als 2-6 Zeichen sein werden, da dies Uhrzeiten in verschiedener Formatierungen sind. und bei Zeile 3 ist es verdammt unwahrscheinlich, dass dieser länger als 20 sein wird. aber das lässt sich ja mit einem [:20] leicht lösen.


    Zur Zeile 2:

    diese Zeile darf maximal 40 Zeichen besitzen. Die ersten 20 Zeichen sollen in "zeile2" stehen. wenn noch mehr Zeichen in der Zeile vorhanden waren, sollen die restlichen Zeichen (also Zeichen 20-40) in die Hilfsvariable "zeile2_hilfe" geschrieben werden.


    ich schau am Montag mal, ob mir dein letzter Beispielcode weiter helfen kann.

  • Hallo,


    kürzer und "pythonischer" mittels List Comprehension:


    Datei `test.txt`:

    Code
    1. abcde
    2. 123
    3. 4567
    4. abcdefghijklmn
    5. xyz
    6. foo
    7. bar

    Code:

    Python
    1. >>> with open('test.txt', 'r') as file:
    2. ... result = [line[0:5].strip() for counter, line in enumerate(file.readlines()) if counter < 5]
    3. ...
    4. >>> result
    5. ['abcde', '123', '4567', 'abcde', 'xyz']
    6. >>>