@Clinteney: Нет проблем ;-) Вы также можете посмотреть pickle, сохраняете ли вы объекты в строки.
Кэмерон
2
Это не массив, это список, массивы представляют базовые значения и ведут себя очень похоже на списки, за исключением того, что тип хранящихся в них объектов ограничен.
Хоакин
8
Дружеское напоминание: не используйте eval, даже если вы уверены, что строка безопасна. Это не стоит потенциальной угрозы безопасности для чего-то большего, чем личные сценарии и игра в интерактивной оболочке.
А. Уилсон
3
eval ('[' + text + ']') будет рассматривать a, b, c как переменные, а не строку.
Файбин
1
Понижено, потому что два предложенных решения делают совершенно разные вещи, и это никак не объясняется в тексте ответа. Хотя сам вопрос не совсем ясен, в ответе должно быть ясно, что оба решения - не эквивалентные альтернативы, а различные интерпретации вопроса.
Matteo Italia
179
Просто добавлю к существующим ответам: надеюсь, в будущем вы столкнетесь с чем-то еще:
>>> word ='abc'>>> L = list(word)>>> L
['a','b','c']>>>''.join(L)'abc'
Но то , что вы имеете дело с прямо сейчас , пойти с @ Cameron ответ «s.
>>> word ='a,b,c'>>> L = word.split(',')>>> L
['a','b','c']>>>','.join(L)'a,b,c'
Хотя я согласен с вами, что ответ @ Cameron был ответом «прямо сейчас», я думаю, что ваша тщательность делает этот ответ более правильным. В реальном мире нам редко даются строки, разделенные запятыми, и полезно знать, как преобразовать их в список независимо от формата.
TristanZimmerman
39
Следующий код Python превратит вашу строку в список строк:
Это выводит то, что находится между (), то есть вообще ничего.
Anthon
7
Если вы действительно хотите массивы:
>>>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'
Из любопытства, после того, как вы сделали myarray = array ('c', text), куда делась буква "c"? так как если вы введете массив, вы получите массив ("c", "abc"), но a [0] == a? Спасибо
Clinteney Хуэй
@Clinteney: «c» означает «создать массив символов». См. Документы для получения дополнительной информации
Камерон
Я проголосовал, но слишком рано. Я получаю массив ('c', '1 1 91 0,001 228') при вызове a = array ('c', e) где e = "1 1 91 0,001 228"
Валентин Хайниц
@ValentinHeinitz Да, это то, что вы должны получить, как показано в моем примере. Что вы ожидаете ?
Хоакин
1
@joaquin: Хорошо, я понял. Все в порядке с ответом. Меня смутил вопрос: «text == [a, b, c]» должно быть «text == ['a', 'b', 'c']"
Валентин Хайниц
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]]
Пожалуйста, предоставьте некоторую дополнительную информацию вместе с вашим кодом, чтобы оригинальный автор мог лучше понять, как это решает его проблему.
Иван
4
Все ответы хороши, есть другой способ, который заключается в понимании списка, см. Решение ниже.
Чтобы преобразовать 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
Ответы:
Как это:
Кроме того, вы можете использовать,
eval()
если вы доверяете строке, чтобы быть в безопасности:источник
pickle
, сохраняете ли вы объекты в строки.Просто добавлю к существующим ответам: надеюсь, в будущем вы столкнетесь с чем-то еще:
Но то , что вы имеете дело с прямо сейчас , пойти с @ Cameron ответ «s.
источник
Следующий код Python превратит вашу строку в список строк:
источник
json
например:json.loads(teststr)
Я не думаю , что вам нужно , чтобы
В Python редко требуется преобразовать строку в список, потому что строки и списки очень похожи
Изменение типа
Если у вас действительно есть строка, которая должна быть массивом символов, сделайте это:
Не меняя тип
Обратите внимание, что строки очень похожи на списки в Python
Строки имеют методы доступа, например списки
Строки являются итеративными, как списки
TLDR
Строки являются списками. Почти.
источник
Если вы хотите разделить пробелы, вы можете просто использовать
.split()
:Вывод:
источник
()
, то есть вообще ничего.Если вы действительно хотите массивы:
Если вам не нужны массивы, а вы хотите просматривать только символы по индексу, помните, что строка является итеративной, как список, за исключением того факта, что она неизменна:
источник
источник
Все ответы хороши, есть другой способ, который заключается в понимании списка, см. Решение ниже.
для списка через запятую сделайте следующее
источник
Я обычно использую:
то
strip
удалить пробелы вокруг слов.источник
Чтобы преобразовать
string
имеющую формуa="[[1, 3], [2, -6]]"
я написал еще не оптимизированный код:источник
Вы должны использовать встроенный
translate
метод для строк.Введите
help('abc'.translate)
в оболочке Python для получения дополнительной информации.источник
Используя функциональный Python:
источник
Пример 1
Пример 2
источник