53 votes

Comment supprimer les mots entre deux délimiteurs ?

J'ai des données bruyantes...quelque chose comme

<@ """@$ FSDF >something something <more noise>

Maintenant, je veux juste extraire "something something". Y a-t-il un moyen de supprimer le texte entre ces deux délimiteurs "<" et ">" ?

23voto

0605002 Points 5702

Bien sûr, vous pouvez utiliser des expressions régulières.

import re
s = #your string here
t = re.sub('<.*?>', '', s)

Le code ci-dessus devrait le faire.

5voto

user1993440 Points 51

Tout d'abord merci Paulo Scardine, j'ai utilisé votre re pour faire une grande chose. L'idée était d'avoir une balise libre LibreOffice po fichier à des fins d'impression. Et j'ai fait le script suivant qui va nettoyer le fichier d'aide pour les plus petits et plus faciles.

import re
f = open('a.csv')
text = f.read()
f.close()

clean = re.sub('<[^>]+>', ' ', text)

f = open('b.csv', 'w')
f.write(clean)
f.close()

2voto

robert king Points 5369

Juste pour l'intérêt, vous pouvez écrire un code tel que :

with open('blah.txt','w') as f:
    f.write("""<sdgsa>one<as<>asfd<asdf>
<asdf>two<asjkdgai><iasj>three<fasdlojk>""")

def filter_line(line):
    count=0
    ignore=False
    result=[]
    for c in line:
        if c==">" and count==1:
            count=0
            ignore=False
        if not ignore:
            result.append(c)
        if c=="<" and count==0:
            ignore=True
            count=1
    return "".join(result)

with open('blah.txt') as f:
    print "".join(map(filter_line,f.readlines()))

>>> 
<>one<>asfd<>
<>two<><>three<>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X