it-swarm.com.de

Wie konvertiere ich einen String in eine Liste in Python?

Wie konvertiert man einen String in eine Liste?

Angenommen, die Zeichenfolge ist wie text = "a,b,c". Nach der Konvertierung text == ['a', 'b', 'c'] und hoffentlich text[0] == 'a', text[1] == 'b'?

71
Clinteney Hui

So was:

>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]

Alternativ können Sie eval() verwenden, wenn Sie sicher sind, dass die Zeichenfolge sicher ist:

>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
130
Cameron

Nur um die vorhandenen Antworten zu ergänzen: In Zukunft werden Sie auf etwas Ähnliches stoßen:

>>> Word = 'abc'
>>> L = list(Word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'

Aber was Sie gerade mit anfangen, gehen Sie mit der Antwort von @ Cameron .

>>> Word = 'a,b,c'
>>> L = Word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
109
Droogans

Der folgende Python-Code verwandelt Ihre Zeichenfolge in eine Liste von Zeichenfolgen:

import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
23
Bryan

Ich glaube nicht, dass Sie brauchen an

In Python müssen Sie selten eine Zeichenfolge in eine Liste konvertieren, da sich Zeichenfolgen und Listen sehr ähnlich sind

Typ ändern

Wenn Sie wirklich eine Zeichenfolge haben, die ein Zeichenfeld sein soll, führen Sie Folgendes aus:

In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']

Der Typ wird nicht geändert

Beachten Sie, dass Strings sehr ähnlich zu Listen in Python sind

Strings haben Zugriffselemente wie Listen

In [3]: x[0]
Out[3]: 'f'

Strings sind wie Listen iterierbar

In [4]: for i in range(len(x)):
...:     print x[i]
...:     
f
o
o
b
a
r

TLDR

Strings sind Listen. Fast.

14
firelynx

Wenn Sie tatsächlich Arrays möchten:

>>> 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'

Wenn Sie keine Arrays benötigen und Ihre Zeichen nur anhand des Index anzeigen möchten, denken Sie daran, dass eine Zeichenfolge eine Iteration ist, genau wie eine Liste, es sei denn, sie ist unveränderlich:

>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
7
joaquin

Wenn Sie nach Leerzeichen aufteilen möchten, können Sie einfach .split() verwenden:

a = 'mary had a little lamb'
z = a.split()
print z

Ausgabe:

['mary', 'had', 'a', 'little', 'lamb'] 
3
vivek mishra
m = '[[1,2,3],[4,5,6],[7,8,9]]'

m= eval(m.split()[0])

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
1
Josué

Um ein string mit der Form a="[[1, 3], [2, -6]]" zu konvertieren, habe ich noch nicht optimierten Code geschrieben:

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
1
Khalid

Ich verwende normalerweise:

l = [ Word.strip() for Word in text.split(',') ]

die Variable strip entfernt Leerzeichen um Wörter.

1
Yannick Loiseau
# to strip `,` and `.` from a string ->

>>> 'a,b,c.'.translate(None, ',.')
'abc'

Sie sollten die integrierte translate-Methode für Zeichenfolgen verwenden. 

Geben Sie help('abc'.translate) bei Python Shell ein, um weitere Informationen zu erhalten.

0
N 1.1

Verwendung von funktionellem Python:

text=filter(lambda x:x!=',',map(str,text))
0
Eratosthenes

Alle Antworten sind gut, es gibt einen anderen Weg, nämlich Listenverständnis, siehe Lösung unten. 

u = "UUUDDD"

lst = [x for x in u]

für eine durch Kommas getrennte Liste gehen Sie wie folgt vor 

u = "U,U,U,D,D,D"

lst = [x for x in u.split(',')]
0
Zeus