Как преобразовать строку в список?
Скажем, что строка похожа на text = "a,b,c"
. После преобразования text == ['a', 'b', 'c']
и, надеюсь, text[0] == 'a'
, text[1] == 'b'
?
Как преобразовать строку в список?
Скажем, что строка похожа на text = "a,b,c"
. После преобразования text == ['a', 'b', 'c']
и, надеюсь, text[0] == 'a'
, text[1] == 'b'
?
Вот так:
>>> 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'
Но с чем вы сейчас сталкиваетесь, перейдите с ответом @Cameron.
>>> 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
Строки - это списки. Почти.
Если вы действительно хотите массивы:
>>> 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
удаляет пробелы вокруг слов.
Для преобразования a 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
m = '[[1,2,3],[4,5,6],[7,8,9]]'
m= eval(m.split()[0])
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# to strip `,` and `.` from a string ->
>>> 'a,b,c.'.translate(None, ',.')
'abc'
Вы должны использовать встроенный метод translate
для строк.
Введите help('abc'.translate)
в оболочку Python для получения дополнительной информации.
Использование функционального Python:
text=filter(lambda x:x!=',',map(str,text))
Все ответы хороши, есть другой способ, который заключается в понимании списка, см. Решение ниже.
u = "UUUDDD"
lst = [str(x) for x in u]
для списка через запятую сделайте следующее
u = "U,U,U,D,D,D"
lst = [x for x in u.split(',')]