Il y a plusieurs façons de écorcher un chat, pour ainsi dire :)
Avant de commencer si, ne pas utiliser eval sur les chaînes qui ne vous appartiennent si la chaîne n'a jamais quitté votre programme; c'est-à-dire qu'il est resté dans un fichier, envoyé sur un réseau, quelqu'un peut envoyer quelque chose de méchant. Et si quelqu'un peut, vous pouvez être sûr que quelqu'un le fera.
Et vous pourriez vouloir regarder par-dessus votre format de données. Mettre des chaînes comme ["baa", "beee", "0", "\ n"] dans un fichier n'a pas beaucoup de sens pour moi.
La première et la plus simple serait de supprimer les éléments dont vous n'avez pas besoin et de comparer les chaînes. Cela fonctionnerait aussi longtemps que le « 0'cordes regarde toujours la même chose et que vous n'êtes pas vraiment après la valeur entière 0, seul le motif de caractères:
TcsLine = '["baa","beee","0"]'
line = TcsLine.strip('[]').split(",")
if line[2] == '"0"':
print line
La deuxième façon serait de même à la première sauf que nous insultaient de la chaîne numérique à un nombre entier, ce qui donne la valeur entière que vous recherchez (mais l'impression « ligne » sans tous les guillemets):
TcsLine = '["baa","beee","0"]'
line = [e.strip('"') for e in TcsLine.strip('[]').split(",")]
NumPFCs = int(line[2])
if NumPFCs==0:
print line
pourrait-il que la la chaîne est actuall y un tableau json? Ensuite j'obtiendrais probablement simplejson pour l'analyser correctement si j'exécutais Python < 2.6 ou simplement importer json sur Python> = 2.6. Transformez ensuite la chaîne '0' résultante en un entier comme dans l'exemple précédent.
TcsLine = '["baa","beee","0"]'
#import json # for >= Python2.6
import simplejson as json # for <Python2.6
line = json.loads(TcsLine)
NumPFCs = int(line[2])
if NumPFCs==0:
print line
Une chaîne contenant '"0"]' convertit-elle de manière fiable? –