Zastosowanie regular expressions:
>>> import re
>>> s = '<@ """@$ FSDF >something something <more noise>'
>>> re.sub('<[^>]+>', '', s)
'something something '
[Aktualizacja]
Jeśli próbowałeś wzór jak <.+>
, gdzie kropka oznacza dowolny znak, a znak plus oznacza jeden lub więcej, wiem, że to nie działa.
>>> re.sub(r'<.+>', s, '')
''
Dlaczego!?! Dzieje się tak, ponieważ wyrazy regularne są domyślnie "chciwe". Wyrażenie będzie pasować do wszystkiego, aż do końca łańcucha, w tym do >
- a tego nie chcemy. Chcemy dopasować <
i zatrzymać się na następnym >
, więc używamy wzoru [^x]
, który oznacza "dowolny znak, ale x" (x jest >
).
Operator ?
okazuje meczu „non-chciwy”, więc to ten sam efekt:
>>> re.sub(r'<.+?>', '', s)
'something something '
Poprzedniego jest bardziej wyraźny, ten jest mniej pisania; należy pamiętać, że x?
oznacza zero lub jedno wystąpienie x.
to zawsze dane tego formularza z jednym wierszem? – vdbuilder
Czy chcesz wyodrębnić "coś na czymś" lub usunąć tekst między ogranicznikami "<" and ">"? –
Cześć ... Dane mają wiele linii. Zasadniczo ogromny plik Chcę wydobyć "coś z czegoś", ale używając re i pięknej zupy ... nagle zostawia mnie z pustym plikiem .. nie do końca pewny dlaczego .. Ale jeśli mogę skasuj tekst między "<" and ">", to też służy temu samemu celowi :) – Fraz