Quelle est une manière pythonique d'analyser cette chaîne entre crochets:
result = txt.split('[')[1].split(']')[0]
pour obtenir le résultat:
bar
Qu'ai-je essayé :
Comment je le résoudrais et je pense que ce n'est pas très élégant:
txt = 'foo[bar]'
Je pense fermement qu'il existe une bibliothèque ou une méthode qui a un solution plus tolérante et élégante pour cela. C'est pourquoi j'ai créé cette question.
3 Réponses :
Une des nombreuses façons, en utilisant slicing :
bar
OU
import re txt = 'foo[bar]' m = re.search(r"\[([A-Za-z0-9_]+)\]", txt) print(m.group(1))
SORTIE:
print(txt[4:].strip("[]"))
Utilisation de Regex.
Ex:
['bar']
Sortie:
import re txt = 'foo[bar]' print(re.findall(r"\[(.*?)\]", txt))
Une autre approche du découpage en tranches, en utilisant str.index
pour trouver les emplacements des délimiteurs de début et de fin. Une fois que vous obtenez une tranche Python, vous pouvez la faire comme un index dans la liste, sauf que la tranche ne donne pas seulement un seul caractère, mais la plage de caractères du début à la fin.
bar
Copie possible de Expression régulière pour renvoyer tous les caractères entre deux spéciaux personnages