Как преобразовать следующую строку в массив с помощью Python (в этой строке может быть неопределенное количество элементов)?
'["Foo","Bar","Baz","Woo"]'
Это определенно также строковое представление. type() дал:
<class 'str'>
Понятно.
interestedin = request.POST.get('interestedIn')[1:-1].split(',')
interested = []
for element in interestedin:
interested.append(element[1:-1])
Где request.POST.get('interestedIn') дал строковый список '["Foo","Bar","Baz","Woo"]' «вещь».
Возможный дубликат Как преобразовать строку в список в Python?
вы говорите об элементе внутри этого списка?
Похоже, это повторяющийся вопрос - я уверен, что видел по крайней мере несколько вариантов. В любом случае, что вы пробовали и почему это не сработало?
ast.literal_eval() или json.loads() ...
Я предполагаю, что он хочет "" .join (str_list), и имеет очень странный способ написать вопрос.
Создание переменной путем копирования / вставки вашей «следующей строки» определенно не возвращает класс str при запуске type (). По крайней мере, на моей машине.
Вау - -10 XD да, это точно струна. Я обещаю. type (my_variable) дает <class 'str'>. Я пропустил распорки ».
* Это происходит из-за передачи массива через почтовый запрос AJAX.
Понял - только что обновил свой вопрос. Извиняюсь за такой странный вопрос! :)
Отвечает ли это на ваш вопрос? Преобразовать строковое представление списка в список






Работа со строкой '["Foo", "Bar", "Baz", "Woo"]'
str = '["Foo","Bar","Baz","Woo"]'
str1 = str.replace(']','').replace('[','')
l = str1.replace('"','').split(",")
print l # ['Foo', 'Bar', 'Baz', 'Woo'] A list
Если вы имеете в виду использование массива Python модуль, вы могли бы сделать так:
import array as ar
x=ar.array('c') #char array
for i in ['Foo', 'Bar', 'Baz', 'Woo']: x.extend(ar.array('c',i))
print x #array('c', 'FooBarBazWoo')
Это будет намного проще, если вы рассмотрите возможность использования numpy:
import numpy as np
y=np.array(['Foo', 'Bar', 'Baz', 'Woo'])
print y # ['Foo' 'Bar' 'Baz' 'Woo']
Первый вариант портит ваши данные, если какой-либо из элементов содержит [или] как часть собственного текста. Второй и третий варианты не начинаются со строки и не имеют ничего общего с преобразованием строки в массив или списком.
Ты можешь сделать это
import ast
list = '["Foo","Bar","Baz","Woo"]'
list = ast.literal_eval(list)
print list
@GCien Это должно быть отмечено как правильный ответ.
Вы можете использовать функцию eval
list = eval('["Foo","Bar","Baz","Woo"]')
print (list)
# ['Foo', 'Bar', 'Baz', 'Woo']
вы также можете сделать это
import json
json.loads('["Foo","Bar","Baz","Woo"]')
Это похоже на список, а не на строку ...