Suchen Ersetzen mit Variablen

Das Textverarbeitungsprogramm

Moderator: Moderatoren

Neuling2022
Beiträge: 1
Registriert: Mi, 13.07.2022 10:51

Suchen Ersetzen mit Variablen

Beitrag von Neuling2022 »

Hallo und Guten Tag,

vielen Dank, dass ich mit diesem Forum schon so viele Probleme lösen konnte.

Jetzt habe ich mich aber hier neu im Forum angemeldet, weil ich für mein jetziges Problem keine Lösung gefunden habe.

Ich möchte in einem ICal-Kalender den vordefinierten Ganztagesstempel durch eine Zeitspanne ersetzen.

Jetzt steht im Kalender:

DTSTART;VALUE=DATE:20220104
DTEND;VALUE=DATE:20220105

Dieser Ganztages-Stempel soll ersetzt werden durch die Zeitspanne von 7.00 bis 19.00 Uhr:

DTSTART:20220105T070000
DTEND:20220105T190000

Ich habe hier zwei Probleme:

1. Bei dem Ganztagesstempel müsste das erste Datum, welches eine Variable ist, bei DTSTART um einen Tag aufaddiert werden, so dass dort auch 20220105 steht.

2. Anschließend müsste an die Datumsvariable der Zeitstempel angehängt werden.

Also laienhaft ausgedrückt für die erste Befehlszeile:

Zuerst

Suche: DTSTART;VALUE=DATE:XXXXXXXX
Ersetze: DTSTART;VALUE=DATE:XXXXXXXX + 1 Tag

Danach

Suche: DTSTART;VALUE=DATE:XXXXXXXX
Ersetze: DTSTART:XXXXXXXXT070000

Vielen Dank für die Hilfe
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Suchen Ersetzen mit Variablen

Beitrag von Karolus »

Hallo
Aus writer heraus mit nur den Bordmitteln per Suchen & Ersetzen wird das ne sehr frickelige bis unmögliche Angelegenheit (du musst ja theoretisch auch Monats- und Jahreswechsel berücksichtigen für das Startdatum!!)

Hier ist ne einfache Umsetzung per python

Code: Alles auswählen

from datetime import datetime as dt, timedelta 

SOFFSET = timedelta(days=1,hours=7) 
EOFFSET = timedelta(hours=19)

with open("old.ical") as oldfile, open("new.ical", "w") as newfile:
    for line in oldfile:
        line = line.strip()
        if line.startswith("DTSTART;VALUE=DATE:"):
            line = f"DTSTART:{dt.strptime(line[-8:],'%Y%m%d') + SOFFSET :%Y%m%dT%H%M%S}"
        if line.startswith("DTEND;VALUE=DATE:"):
            line = f"DTEND:{dt.strptime(line[-8:],'%Y%m%d') + EOFFSET :%Y%m%dT%H%M%S}"
        newfile.write(f'{line}\n')
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Antworten