Как преобразовать строку в список в Python?
как преобразовать строку в список?
скажем, строка похожа text = "a,b,c"
. После преобразования text == ['a', 'b', 'c']
и надеюсь text[0] == 'a'
,text[1] == 'b'
?
11 ответов:
такой:
>>> text = 'a,b,c' >>> text = text.split(',') >>> text [ 'a', 'b', 'c' ]
кроме того, вы можете использовать
eval()
Если Вы доверяете строку, чтобы быть безопасным:>>> text = 'a,b,c' >>> text = eval('[' + text + ']')
просто чтобы добавить к существующим ответам: надеюсь, вы столкнетесь с чем-то более похожим на это в будущем:
>>> word = 'abc' >>> L = list(word) >>> L ['a', 'b', 'c'] >>> ''.join(L) 'abc'
но с чем ты имеешь дело прямо сейчас перейдите с @Камерон'ы ответ.
>>> word = 'a,b,c' >>> L = word.split(',') >>> L ['a', 'b', 'c'] >>> ','.join(L) 'a,b,c'
следующий код Python превратит вашу строку в список строк:
import ast teststr = "['aaa','bbb','ccc']" testarray = ast.literal_eval(teststr)
Я не думаю, что вы нужно до
в python вам редко нужно конвертировать строку в список, потому что строки и списки очень похожи
изменение типа
если у вас действительно есть строка, которая должна быть массивом символов, этого:
In [1]: x = "foobar" In [2]: list(x) Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
не меняя тип
обратите внимание, что строки очень похожи на списки в python
строки имеют аксессоры, например списки
In [3]: x[0] Out[3]: 'f'
строки повторяются, как списки
In [4]: for i in range(len(x)): ...: print x[i] ...: f o o b a r
TLDR
строки списков. Почти.
Если вы действительно хотите массивов:
>>> 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'
Если вам не нужны массивы, и вы хотите только посмотреть по индексу на свои символы, помните, что строка является итерационной, как и список, за исключением того, что она неизменна:
>>> text = "a,b,c" >>> text = text.replace(',', '') >>> text[0] 'a'
В случае, если вы хотите разделить пробелами, вы можете просто использовать
.split()
:a = 'mary had a little lamb' z = a.split() print z
выход:
['mary', 'had', 'a', 'little', 'lamb']
Я обычно использую:
l = [ word.strip() for word in text.split(',') ]
the
strip
удалить пробелы вокруг слова.
преобразование
string
имеющие формуa="[[1, 3], [2, -6]]"
Я написал еще не оптимизированный код: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