2016-12-09 1 views
0

Est-il possible de supprimer des caractères dans une chaîne à l'aide d'une bande? Par exempleSuppression d'étiquettes dans une chaîne avec une bande?

Si je prends:

s = <city>Omaha</city> 
s.strip("< ").strip(" > \n").strip("/") 

Cela se transformerait en:

city>Omaha</city 

est-il de toute façon pour enlever la ville> et </ville en utilisant une bande ou divisée?

+0

S'il vous plaît terminer votre question. Voulez-vous savoir comment supprimer tout ce qui se trouve à l'intérieur des chevrons, par exemple '' et ''? Ou juste ceux au début ou à la fin de la chaîne? –

+0

Désolé, il a été coupé. Je viens de le corriger –

+0

Vous avez seulement partiellement répondu à ma question. Dans un autre commentaire, vous dites que vous ne voulez pas juste ''. Voulez-vous supprimer toutes les équerres? Seulement les paires avec une barre oblique dans la seconde? Seulement au début et à la fin ou aussi à l'intérieur de la chaîne? –

Répondre

0

Si les supports sont toujours <city> et </city>:

>>> s = "<city>Omaha</city>" 
>>> s.strip("<city>").strip("</city>") 
'Omaha' 
+0

Cela fonctionnerait mais toutes les données ne sont pas . , , etc. –

+0

@JohnDoe savez-vous s'il s'agit d'un type de fichier valide, par ex. xml? – rofls

+0

C'est un fichier .txt –

0

Ce code supprime toutes les balises imbriquées correctement par division:

s = "In the <noun>city</noun> of <city>Omaha</city>..." 
parts = [x.split(">") for x in s.split("<")] 
print(parts) 
# [['In the '], ['noun', 'city'], ['/noun', ' of '], ['city', 'Omaha'], ['/city', '...']] 
s = ''.join(parts[0] + [part[1] for part in parts[1:]]) 
print(s) 
# In the city of Omaha... 
0

Allant par votre exemple spécifique - S'il n'y aura pas 2 mots balisés dans l'entrée:

s = "<city>Omaha</city>" 
s.split('>')[1].split('<')[0] 

outp uts:

'Omaha' 

Cela fonctionnera même s'il y a une phrase complète - à condition qu'il n'y ait qu'une seule étiquette dans la phrase.

S'il peut y avoir plus d'un:

example = "An example is only <word>valid</word> when its not <opposite>invalid</opposite>." 
split_example = example.split('>') 
for i in range(len(split_example)): 
    if "</" in split_example[i]: 
     split_example[i].split('<')[0] 

sorties:

'valid' 
'invalid'