Je voudrais analyser une chaîne comme ceci:Python, comment analyser des chaînes pour ressembler sys.argv
-o 1 --long "Some long string"
dans ce:
["-o", "1", "--long", 'Some long string']
ou similaire.
Ceci est différent de getopt, ou d'optparse, qui commence avec une entrée analysée par sys.argv (comme la sortie ci-dessus). Existe-t-il un moyen standard de le faire? Fondamentalement, c'est "fractionnement" tout en gardant les chaînes entre guillemets.
Ma meilleure fonction à ce jour:
import csv
def split_quote(string,quotechar='"'):
'''
>>> split_quote('--blah "Some argument" here')
['--blah', 'Some argument', 'here']
>>> split_quote("--blah 'Some argument' here", quotechar="'")
['--blah', 'Some argument', 'here']
'''
s = csv.StringIO(string)
C = csv.reader(s, delimiter=" ",quotechar=quotechar)
return list(C)[0]
Mon propre vrai oubli a révélé: http://stackoverflow.com/questions/92533, m'a fait utiliser shlex.split. Clairement je l'ai juste oublié. –
Si ce dont vous avez réellement besoin est de "traiter les options" et pas seulement "d'analyser les chaînes sur la ligne de commande", vous pouvez envisager http://docs.python.org/2/library/argparse.html –