Seite 1 von 1
Klammern & Inhalte aus textstr entfernen
Verfasst: Samstag 21. Juli 2018, 13:18
von ArashiTok
Hi hab mal eine allgemeine frage,
da ichs nicht so mit Regex hab wollte ich mal fragen ob ihr mir nen guten ansatz geben könnt.
Ich habe mehrere zeilen in dem CRC strings stehen zbsp. so [48d08d521] oder so (48d08d521) ich möchte die klammernpaare komplett entfernen.
ich habs mit:
Probiert das schneidet zwar den bereich (...) weg aber der rest ^^ verschwindet ebenso,
hat einer vieleicht eine idee womit ich nur das Klammernpaar inklusiv inhalt entferne.
MfG Ara
Re: Klammern & Inhalte aus textstr entfernen
Verfasst: Samstag 21. Juli 2018, 13:31
von nezzcarth
Reguläre Ausdrücke sind hier meiner Meinung nach nicht notwendig.
Um unerwünschte Zeichen loszuwerden, kann man z.B. so vorgehen:
Code: Alles auswählen
In [1]: s = ' [48d08d521] '
In [2]: ''.join(char for char in s if not char in '[]() ')
Out[2]: '48d08d521'
Re: Klammern & Inhalte aus textstr entfernen
Verfasst: Samstag 21. Juli 2018, 13:45
von ArashiTok
ich will den inhalt ebenfalls los werden ^^ sagte ja klammern inklusiv inhalt aber denoch netter ansatz
Re: Klammern & Inhalte aus textstr entfernen
Verfasst: Samstag 21. Juli 2018, 13:55
von nezzcarth
Dann vielleicht so:
Code: Alles auswählen
In [1]: import re
In [2]: s = 'abcdef [48d08d521] ghij klmn'
In [3]: re.sub(r'\[[^\]]+\]', '', s)
Out[3]: 'abcdef ghij klmn'
Runde und eckige Klammern würde ich separat behandeln, da es so übersichtlicher ist und man Mischformen leichter ausschließen kann.
Re: Klammern & Inhalte aus textstr entfernen
Verfasst: Samstag 21. Juli 2018, 14:02
von __blackjack__
@nezzcarth: Versuch das mal mit mehr als einer geklammerten Zahl in `s`.
Mein Vorschlag: re.sub(r' \([0-9a-f]+?\)|\[[0-9a-f]+?\] ', ' ', text)
Re: Klammern & Inhalte aus textstr entfernen
Verfasst: Samstag 21. Juli 2018, 14:03
von ArashiTok
Ha... ja genau das ist es ^^ vielen dank
Re: Klammern & Inhalte aus textstr entfernen
Verfasst: Samstag 21. Juli 2018, 14:19
von nezzcarth
@__blackjack__:
Ja, Verschachtelungen sind hierbei problematisch. Ein etwas seltenere Option wäre, 'luapatt' zu nehmen:
Code: Alles auswählen
In [1]: import re
In [2]: s1 = 'abcdef [48d08d521] ghij [923df234dd1] klmn'
In [3]: s2 = 'abcdef [48d08[d]521] ghij [923df234dd1] klmn'
In [4]: re.sub(r'\[[^\]]+\]', '', s1)
Out[4]: 'abcdef ghij klmn'
In [5]: re.sub(r'\[[^\]]+\]', '', s2)
Out[5]: 'abcdef 521] ghij klmn'
In [6]: import luapatt
In [7]: luapatt.gsub(s1, '%b[]', '')
Out[7]: 'abcdef ghij klmn'
In [8]: luapatt.gsub(s2, '%b[]', '')
Out[8]: 'abcdef ghij klmn'