Je veux faire (et décoder) une seule chaîne composée de plusieurs cornichons Python.
y a-t-il un caractère ou une séquence qui est sûr à utiliser comme séparateur de cette chaîne? p>
Je devrais être capable de faire la chaîne comme si: p> i devrait être capable de prendre cette chaîne et de reconstruire les objets comme: p> [pickle.loads(s) for s in input.split(PICKLE_SEPARATOR)]
5 Réponses :
Une solution serait de préparer votre chaîne de cornichons avec des données sur le nombre de caractères que chaque élément constituant contient. P>
Je n'utilise pas beaucoup de python, mais y a-t-il une raison pour laquelle vous ne pouviez pas simplement corner un tableau à la place? Donc, la décapage devient et reconstruction devient p> et restaurer avec p> Je ne suis pas sûr qu'il y ait un avantage à cela, bien que. (Bien que je n'en ai pas vu un, il se peut que ce soit un meilleur moyen que cette vilaine boucle / exception, comme je l'ai dit, je n'utilise pas beaucoup de python.) P> p>
Cela ne fonctionnera malheureusement pas pour les ruisseaux. J'ai besoin de lire la chaîne séparément car je ne peux pas utiliser de cornichon charger code> mais seulement
charges code>
EDIT: strong> Premièrement, considérez la réponse du gnibbler, qui est évidemment beaucoup plus simple. La seule raison de préférer celui ci-dessous est si vous voulez pouvoir diviser une séquence de cornichons sans les analyser. Un pari assez sûr consiste à utiliser une nouvelle UUID que vous ne réutilisez jamais ailleurs. Evaluez uuid.uuid4 (). Octets code> une fois et stocke le résultat dans votre code comme séparateur. Er.g.:
>>> import uuid
>>> uuid.uuid4().bytes
'\xae\x9fW\xff\x19cG\x0c\xb1\xe1\x1aV%P\xb7\xa8'
C'est bien de simplement caténer les cornichons ensemble, Python sait où chacun se termine
Un potentiel gotcha: cela ne fonctionne pas pour les chaînes, uniquement des objets de type fichier: essayez pickle.load (s) code> trois fois, seul le
dict code> est renvoyé.
Dans Python 3, il peut être fait à l'aide de BYTESIO:
{} [] ()
Étant donné que Redis Les valeurs peuvent être des collections de chaînes, pourquoi ne stockez-vous pas seulement chacun séparément?