2010-01-08 9 views
2

J'ai regardé à la documentation re et à d'autres questions, mais je continue à courir des ennuis avec regex.Remplacement du texte en Python

Je dois prendre ce qui est toujours dans la [tag] hors de la chaîne.

string = "Article Name [Tag Name]" 
#and I want to go to 
string = "Article Name" 

Je serais très reconnaissant si quelqu'un pouvait vous aider.

Répondre

1

Cela ne veut pas utiliser regex donc si c'est une exigence ce n'est pas une réponse mais vous pouvez le faire:

string = string.split('[')[0].strip() 
+0

Celui-ci semblait fonctionner le mieux pour moi. Merci! – user29772

2
re.sub("\s*\[.*?\]", "", string) 
0
re.sub(r"(.*) \[.*\]", r"\1", string) 

Cela n'enlever l'étiquette si elle est à la fin de la chaîne.

1

Si vous êtes sûr [Nom de la balise] est toujours venir après l'article Nom, vous pouvez le faire sans regex.

>>> string="Article Name [Tag Name]" 
>>> string[:string.find(" [")] 
'Article Name' 

ou .partition

>>> string.partition(" [")[0] 
'Article Name' 
0

Mieux encore, sans regex:

txt = "Article Name [Tag Name]" 
if txt.rfind('[') and txt.rfind(']') > txt.rfind('['): txt = txt[:txt.rfind('[')] 
if txt[-1] == ' ': txt = txt[:-1] 
0

voici un r plusieurs instances de [] tags

>>> string = "Article Name [Tag Name] blah blah [tag name2] blah blah [tag name3]" 
>>> for i in string.split("]"): 
... print i[ : i.find("[") ] 
... 
Article Name 
blah blah 
blah blah 
Questions connexes