2012-11-01 5 views
0

ont un fichier YAML ouvert à lirecomment puis-je analyser une chaîne spécifique en python

la recherche d'un chemin qui est stocké dans ce

sera toujours sur la deuxième ligne du fichier sous la forme

Location: !!python/unicode '[PATH here]' 

désolé si c'est élémentaire (je suis sûr que c'est), mais quel est le moyen le plus facile de saisir l'emplacement du chemin?

Répondre

1

La façon la plus rapide est substring juste:

line[28:-1] 

Mais cela ne fonctionne que si vous êtes absolument sûr la ligne sera exactement ce format-pas de différences dans les espaces, etc. Et bien sûr vous doit être sûr que vous avez la bonne ligne; Si la ligne 2 est un commentaire et que la ligne 3 est la ligne réelle, et que vous essayez d'analyser le commentaire, vous obtenez la partie droite du commentaire et vous pensez que c'est un chemin.

Une solution plus robuste et flexible pourrait être d'utiliser une expression rationnelle:

re.match(r".* '(.*)'", line).group(1) 

ou:

re.match(r"Location:\s!!python/unicode\s'(.*)'", q).group(1) 

... etc. Exactement ce que vous voulez utiliser dépend de la variante que vous souhaitez autoriser et ce que vous voulez éviter.

Mais vraiment, si vous voulez analyser YAML, pourquoi ne pas simplement utiliser un analyseur YAML?

0

Une autre façon, qui ne fonctionnera que si vous connaissez le chemin sera le troisième élément sur la ligne:

line.split()[2] 

ou si vous savez ce sera le dernier élément sur la ligne:

line.split()[-1] 
Questions connexes