Uso regular expressions:
>>> import re
>>> s = '<@ """@$ FSDF >something something <more noise>'
>>> re.sub('<[^>]+>', '', s)
'something something '
[Update]
Se si è tentato un modello come <.+>
, dove il punto: ogni personaggio e il segno più: uno o più, si sapere che non funziona
>>> re.sub(r'<.+>', s, '')
''
Perché!?! Succede perché le espressioni regolari sono "golose" per impostazione predefinita. L'espressione corrisponderà a qualsiasi cosa fino alla fine della stringa, incluso lo >
, e questo non è ciò che vogliamo. Vogliamo corrispondere allo <
e fermarci al prossimo >
, quindi utilizziamo il modello [^x]
che significa "qualsiasi carattere tranne x" (x è >
).
L'operatore ?
trasforma la partita "non-greedy", quindi questo ha lo stesso effetto:
>>> re.sub(r'<.+?>', '', s)
'something something '
Il precedente è più esplicito, questo è meno digitando; essere consapevoli del fatto che x?
significa zero o una ricorrenza di x.
fonte
2012-01-09 05:55:25
sono i dati sempre di quella forma con uno per riga? – vdbuilder
Vuoi estrarre "qualcosa di" o eliminare il testo tra i delimitatori "<" and ">"? –
Ciao .. I dati hanno più righe ... in sostanza un enorme file Voglio estrarre "qualcosa di" ma usando re e una bella zuppa .. improvvisamente mi lascia con un file vuoto .. non del tutto sicuro del perché .. Ma se posso cancella il testo tra "<" and ">", che ha anche lo stesso scopo :) – Fraz