je string: './money.log_rotated.27.10.2011_17:15:01:[27-10-2011 17:07:02]'
Python mots régulièrement coupé
J'ai besoin chaîne: '27-10-2011 17:07:02'
Comment puis-je faire cela en python?
je string: './money.log_rotated.27.10.2011_17:15:01:[27-10-2011 17:07:02]'
Python mots régulièrement coupé
J'ai besoin chaîne: '27-10-2011 17:07:02'
Comment puis-je faire cela en python?
Il y a plusieurs façons de le faire, d'une façon est d'utiliser str.partition:
text='./money.log_rotated.27.10.2011_17:15:01:[27-10-2011 17:07:02]'
before,_,after = text.partition('[')
print(after[:-1])
# 27-10-2011 17:07:02
Une autre est d'utiliser str.split:
before,after = text.split('[',1)
print(after[:-1])
# 27-10-2011 17:07:02
ind1 = text.find('[')+1
ind2 = text.rfind(']')
print(text[ind1:ind2])
Toutes ces méthodes reposent sur la sous-chaîne désirée immédiate en suivant la première parenthèse gauche [
.
Les deux premières méthodes reposent également sur la sous-chaîne désirée se terminant à l'avant-dernier caractère de text
. La dernière méthode (en utilisant rfind
) recherche à partir de la droite l'index de la parenthèse de droite, elle est donc un peu plus générale et ne dépend pas d'autant de constantes (potentielles par défaut).
Vous pouvez également utiliser l'expression régulière:
import re
s = './money.log_rotated.27.10.2011_17:15:01:[27-10-2011 17:07:02]'
print re.search(r'\[(.*?)\]', s).group(1)
Si votre chaîne a toujours la même structure ce qui est probablement la solution la plus simple:
s = r'./money.log_rotated.27.10.2011_17:15:01:[27-10-2011 17:07:02]'
s[s.find("[")+1:s.find("]")]
Mise à jour:
Après avoir vu certains des les autres réponses c'est une légère amélioration:
s[s.find("[")+1:-1]
Exploiter le fait que le crochet fermant est le dernier caractère de votre chaîne.
Essayez avec un regex:
import re
re.findall(".*\[(.*)\]", './money.log_rotated.27.10.2011_17:15:01:[27-10-2011 17:07:02]')
>>> ['27-10-2011 17:07:02']
Probablement la meilleure façon (si vous connaissez la chaîne sera toujours dans ce format
>>> s = './money.log_rotated.27.10.2011_17:15:01:[27-10-2011 17:07:02]'
>>> s[s.index('[') + 1:-1]
'27-10-2011 17:07:02'
Si le format est « fixe », vous pouvez également utiliser ce
>>> s = './money.log_rotated.27.10.2011_17:15:01:[27-10-2011 17:07:02]'
>>> s[-20:-1:]
'27-10-2011 17:07:02'
>>>
double possible de [mots entre délimiteurs Extraction \ [\] en python] (http://stackoverflow.com/questions/2852484/extracting-w ords-between-delimiters-in-python) –