@Clinteney: Pas de problème ;-) Vous voudrez peut-être aussi vérifier picklesi vous persistez des objets en chaînes.
Cameron
2
Ce n'est pas un tableau, c'est une liste, les tableaux représentent des valeurs de base et se comportent beaucoup comme des listes, sauf que le type d'objets qui y sont stockés est contraint.
joaquin
8
Rappel amical: n'utilisez pas eval, même si vous faites confiance à la chaîne pour être sûre. Cela ne vaut pas le risque de sécurité potentiel pour autre chose que des scripts personnels et du violon dans un shell interactif.
A. Wilson
3
eval ('[' + text + ']') traitera a, b, c comme des variables et non comme une chaîne.
phaibin
1
Évalué parce que les deux solutions proposées font des choses complètement différentes, et cela n'est en aucun cas expliqué dans le texte de la réponse. Bien que la question elle-même ne soit pas vraiment claire, il convient de préciser dans la réponse que les deux solutions ne sont pas des alternatives équivalentes, mais des interprétations différentes de la question.
Matteo Italia
179
Juste pour ajouter aux réponses existantes: j'espère que vous rencontrerez quelque chose de plus comme ça à l'avenir:
>>> word ='abc'>>> L = list(word)>>> L
['a','b','c']>>>''.join(L)'abc'
Mais ce à quoi vous avez affaire en ce moment , allez avec la réponse de @ Cameron .
>>> word ='a,b,c'>>> L = word.split(',')>>> L
['a','b','c']>>>','.join(L)'a,b,c'
Bien que je sois d'accord avec vous que la réponse de @ Cameron était la réponse "pour le moment", je pense que votre minutie en fait la réponse la plus correcte. On nous donne rarement des chaînes séparées par des virgules dans le monde réel et il est bon de savoir comment convertir une liste quel que soit le format.
TristanZimmerman
39
Le code Python suivant transformera votre chaîne en une liste de chaînes:
Cela produit ce qui se trouve entre les (), c'est-à-dire rien du tout.
Anthon
7
Si vous voulez réellement des tableaux:
>>>from array import array
>>> text ="a,b,c">>> text = text.replace(',','')>>> myarray = array('c', text)>>> myarray
array('c','abc')>>> myarray[0]'a'>>> myarray[1]'b'
Si vous n'avez pas besoin de tableaux, et que vous voulez seulement regarder par index vos caractères, rappelez-vous qu'une chaîne est un itérable, tout comme une liste sauf le fait qu'elle est immuable:
>>> text ="a,b,c">>> text = text.replace(',','')>>> text[0]'a'
Par curiosité, après avoir fait myarray = array ('c', text), où est passé le "c"? puisque si vous tapez array, vous avez array ("c", "abc"), mais un [0] == a? Merci
Clinteney Hui
@Clinteney: Le 'c' signifie "créer un tableau de caractères". Voir la documentation pour plus d'informations
Cameron
J'ai voté pour, mais trop tôt. J'obtiens array ('c', '1 1 91 0.001 228') en appelant a = array ('c', e) where e = "1 1 91 0.001 228"
Valentin Heinitz
@ValentinHeinitz Oui, c'est ce que vous devez obtenir comme le montre mon exemple. Qu'attendez-vous ?
joaquin
1
@joaquin: Ok, je l'ai. Tout va bien avec la réponse. J'ai été déconcerté par la question "texte == [a, b, c]" devrait être "texte == ['a', 'b', 'c']"
Valentin Heinitz
4
m ='[[1,2,3],[4,5,6],[7,8,9]]'
m= eval(m.split()[0])[[1,2,3],[4,5,6],[7,8,9]]
Veuillez fournir des informations supplémentaires avec votre code afin que l'affiche originale puisse mieux comprendre comment cela résout son problème.
Ivan
4
Toutes les réponses sont bonnes, il existe une autre façon de faire, qui est la compréhension de liste, voir la solution ci-dessous.
u ="UUUDDD"
lst =[x for x in u]
pour une liste séparée par des virgules, procédez comme suit
Pour convertir un code stringayant la forme que a="[[1, 3], [2, -6]]"j'ai écrit mais pas optimisé:
matrixAr =[]
mystring ="[[1, 3], [2, -4], [19, -15]]"
b=mystring.replace("[[","").replace("]]","")# to remove head [[ and tail ]]for line in b.split('], ['):
row =list(map(int,line.split(',')))#map = to convert the number from string (some has also space ) to integer
matrixAr.append(row)print matrixAr
Réponses:
Comme ça:
Vous pouvez également utiliser
eval()
si vous faites confiance à la chaîne pour être sûre:la source
pickle
si vous persistez des objets en chaînes.Juste pour ajouter aux réponses existantes: j'espère que vous rencontrerez quelque chose de plus comme ça à l'avenir:
Mais ce à quoi vous avez affaire en ce moment , allez avec la réponse de @ Cameron .
la source
Le code Python suivant transformera votre chaîne en une liste de chaînes:
la source
json
par exemple:json.loads(teststr)
Je ne pense pas que tu as besoin de
En python, vous avez rarement besoin de convertir une chaîne en liste, car les chaînes et les listes sont très similaires
Changer le type
Si vous avez vraiment une chaîne qui devrait être un tableau de caractères, procédez comme suit:
Ne pas changer le type
Notez que les chaînes ressemblent beaucoup à des listes en python
Les chaînes ont des accesseurs, comme des listes
Les chaînes sont itérables, comme les listes
TLDR
Les chaînes sont des listes. Presque.
la source
Si vous souhaitez diviser par espaces, vous pouvez simplement utiliser
.split()
:Production:
la source
()
, c'est-à-dire rien du tout.Si vous voulez réellement des tableaux:
Si vous n'avez pas besoin de tableaux, et que vous voulez seulement regarder par index vos caractères, rappelez-vous qu'une chaîne est un itérable, tout comme une liste sauf le fait qu'elle est immuable:
la source
la source
Toutes les réponses sont bonnes, il existe une autre façon de faire, qui est la compréhension de liste, voir la solution ci-dessous.
pour une liste séparée par des virgules, procédez comme suit
la source
J'utilise habituellement:
la
strip
suppression des espaces autour des mots.la source
Pour convertir un code
string
ayant la forme quea="[[1, 3], [2, -6]]"
j'ai écrit mais pas optimisé:la source
Vous devez utiliser la fonction intégrée
translate
méthode pour les chaînes.Tapez
help('abc'.translate)
sur Python shell pour plus d'informations.la source
Utilisation de Python fonctionnel:
la source
Exemple 1
Exemple 2
la source