Regex Bestimmtes Wort mit darauffolgender Zahl finden

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.
Gesperrt
Klick
User
Beiträge: 3
Registriert: Montag 2. August 2021, 13:42

Hallo,

mein txt file beinhaltet

Code: Alles auswählen

      hello
      hello 11.11.22
Code soll wort "hello" und zahlen NUR im zusammenhang finden und nach den zahlen "TEST" in der selben Zeile das file schreiben.


Code: Alles auswählen

    import re

with open('sonicwall.txt', 'r') as searchfile:
        for line in searchfile:
            if re.search('host' and [00-100000], line, re.M|re.I):
                    search.
result soll im file so aussehen:

Code: Alles auswählen

     
      hello
      hello 11.11.22 TEST
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie ist denn die Datei wirklich aufgebaut? Das sind ja keine Zahlen, sondern durch . getrennte Ziffernblöcke. Oder soll das ein Datum sein? Wie ist das "Zahlenformat" definiert?
Und welche Gedanken hast Du Dir dazu schon gemacht?
An welcher Stelle kommst Du konkret nicht weiter?

Zum Code: Die Einrückungen stimmen nicht. Das import ist zu weit eingerückt. Und es wird immer mit 4 Leerzeichen pro Ebene eingerückt, nicht mal 8 und mal 4.
Hast Du Dir mal angeschaut, was der Ausdruck 'host' and [00-100000] ergibt?
Warum schreibst Du [00-100000] und nicht einfach [-100000]? Was bedeutet diese -100000? Warum steckt die Zahl in einer Liste? re.search erwartet als erstes Argument einen regulären Ausdruck und keine Liste.
Soll die Aufgabe mit regulären Ausdrücken gelöst werden?
Dann teste erst einmal den regulären Ausdruck, bevor Du anfängst, diesen in ein Programm einzubauen.
Klick
User
Beiträge: 3
Registriert: Montag 2. August 2021, 13:42

Sirius3 hat geschrieben: Montag 2. August 2021, 14:19 Wie ist denn die Datei wirklich aufgebaut? Das sind ja keine Zahlen, sondern durch . getrennte Ziffernblöcke. Oder soll das ein Datum sein? Wie ist das "Zahlenformat" definiert?
Und welche Gedanken hast Du Dir dazu schon gemacht?
An welcher Stelle kommst Du konkret nicht weiter?

Zum Code: Die Einrückungen stimmen nicht. Das import ist zu weit eingerückt. Und es wird immer mit 4 Leerzeichen pro Ebene eingerückt, nicht mal 8 und mal 4.
Hast Du Dir mal angeschaut, was der Ausdruck 'host' and [00-100000] ergibt?
Warum schreibst Du [00-100000] und nicht einfach [-100000]? Was bedeutet diese -100000? Warum steckt die Zahl in einer Liste? re.search erwartet als erstes Argument einen regulären Ausdruck und keine Liste.
Soll die Aufgabe mit regulären Ausdrücken gelöst werden?
Dann teste erst einmal den regulären Ausdruck, bevor Du anfängst, diesen in ein Programm einzubauen.
'host' ist falsch soll 'hello' stehen

1. Zahlen durch Komma getrennt
2. Die Frage ist, ob der Code korrekt ist.
3. Die Einrückung ist hier nur pseudo.
4. [00-100000] bedeutet die zahlen 00-100000 können im zusammenhang mit 'hello' vorkommen.
5. Die Aufgabe soll mit regex gelöst werden. Es geht mir darum X Wort und wenn Y Zahl darauffolgt in einem TXT File zu finden ist, dann soll etwas nach Y Zahl in die selbe Zeile des Files geschrieben werden, hier "TEST" als Beispiel.

Kurzes Beispiel, du hast ein text dokument in dem Daten gespeichert sind, die mit einem Datum gekennzeichnet sind.
Jede Zeile mit einem Datum 2021.08.02 und das darauffolgende Wort OK möchtest du eine weiteren string anbinden. Es geht mir hier um eine automatisierung
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Laut Beispiel sind die Zahlen aber per Punkt getrennt. Mit pseudo-Einrückungen kommt man in Python nicht weit. Sorgfalt ist beim Programmieren und beim Frage stellen wichtig.
Nein, [00-100000] bedeutet Liste mit einer Zahl.

Und zum Schluss kommst Du jetzt mit Datum + OK. Was denn nun?
Host mit IP-Adresse, Hallo mit Kommazahl oder Datum mit OK?
Aber egal was, wie schon in der ersten Antwort, fang damit an, einen regulären Ausdruck an Beispielstrings zu testen.
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@Klick,
1. Zahlen durch Komma getrennt
Später schreibst du: Worte und Zahlen, dann wieder Datum. Dann soll da am Ende "TEST" eingetragen werden und steht da etwas vom darauffolgenden Wort "OK".
Die Antwort ist wahrscheinlich einfach aber die Frage ist mir zu schwer...
Klick
User
Beiträge: 3
Registriert: Montag 2. August 2021, 13:42

Ihr seid echt zu dumm. Könnt ihr nicht zwischen meinen Pseudo Code und einem Beispiel differenzieren?
Ich habe dir gesagt worum es geht, dann für dumme extra dir nochmal ein Beispiel dazu geschrieben damit du das in deinen Kopf bekommst, aber das hilft wohl nichts. Naja habe schon die Lösung selber gefunden, hier sind echt nur vollidioten.
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Benutzer Aufgrund der Beleidung lebenslang gesperrt. Thema geschlossen.
Gesperrt