Hallo,
ich bin ein absoluter Neuling und kann nicht programmieren.
Ich nutze das ECODMOS wir ich über einen Vorlagenmanger etwas automatisch aus Dokumenten auslesen kann.
Ich habe folgendes Problem:
Auf einer A4-Seite stehe die beiden Angaben 009 2023
Um diese habe ich einen Rahmen aufgezogen und dann werden diese auch ausgelsen.
Allerdings im Format 0092023.
Nun habe ich folgenden Befehl versucht: (/(\d{3})\s(\d{4}),"$1-$2")
Leider klappt das nicht.
Ich möchte gerne, dass er die beiden ausgelesenen Zahlen in das Fiormat 009-2023 ausgibt.
Kann mir da jemand helfen?
Vielen DANK!
REGEX für ECO-DMS
- DeaD_EyE
- User
- Beiträge: 1239
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Ohne die Daten zu kenne, würde ich das hier vorschlagen:
Falls du mehr Daten aus der Tabelle holen willst, kannst du den Regex erweitern. Man kann aber auch ohne Regex arbeiten. Im zweiten Beispiel splitte ich den Text und begrenze das auf eine Teilung. Wenn weniger Elemente (nur 1) daraus resultieren, kommt es zu einem ValueError, da auf der Linken Seite mehr Ziele für die Zuweisung sind, als auf der rechten Seite des Gleichheitszeichens.
Dann prüfe ich noch, ob es einer Nummer ist. Auch hier könnte man ein try...except verwenden und im try-block den str in einen int umwandeln. Wenn es keine Ganzzahl ist, wird ein ValueError ausgelöst. Das ist das Prinzip: It's Better to Ask For Forgiveness Than Permission
Code: Alles auswählen
import re
REGEX = re.compile(r"(\d{3})(\d{4})")
text = """
0092023 asdfadf
0092023 adfasdfa
0092023 adfasdf
0092023
0092023 asdfad
0092023 asf
0092023 asdfa
0092023 dfgadf
0092023 ölargaädgar
!!!
"""
print("Mit Regex")
for line in text.splitlines():
if match := REGEX.match(line):
number, year = match.groups()
print(f"{number}-{year}")
print("\nOhne Regex")
for line in text.splitlines():
try:
number_block, _ = line.split(maxsplit=1)
except ValueError:
continue
if number_block.isdecimal():
number, year = number_block[:3], number_block[3:]
print(f"{number}-{year}")
Dann prüfe ich noch, ob es einer Nummer ist. Auch hier könnte man ein try...except verwenden und im try-block den str in einen int umwandeln. Wenn es keine Ganzzahl ist, wird ein ValueError ausgelöst. Das ist das Prinzip: It's Better to Ask For Forgiveness Than Permission
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@biba5384: Natürlich klappt das nicht einen regulären Ausdruck anzugeben der ein Whitespace-Zeichen zwischen den Zahlen erwartet wenn Du ja selbst schon gemerkt hast, dass da eben kein Zeichen zwischen den Zahlen steht.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari