将字符串封闭列表转换为列表

时间:2017-05-03 06:20:58

标签: python string list

我正在尝试将引号括起来的列表转换为列表。他们是这样做的最佳方式。

{% for img in image_set %}

<img src="{{img.media.url}} "/>

{% else %}
<p>No image</p>

{% endfor %}

6 个答案:

答案 0 :(得分:5)

您可以使用ast.literal_eval() 安全评估字符串:

  

安全地评估表达式节点或包含Python的字符串   文字或容器显示。提供的字符串或节点可能只是   由以下Python文字结构组成:字符串,字节,   数字,元组,列表,dicts,集合,布尔值和无。

In [1]: from ast import literal_eval

In [2]: literal_eval("[1,2,3,4,5]")
Out[2]: [1, 2, 3, 4, 5]

答案 1 :(得分:2)

我个人使用JSON,因为它是用于存储和检索列表和词典的合适库:

create table Agencies 
(
AgencyID nvarchar(20) primary key,
AgName nvarchar(40),
AgAddress nvarchar(40),
AgPhone int
)

CREATE TABLE Customers 
(
CustomerID INT PRIMARY KEY IDENTITY,
CustomerFName NVARCHAR(20),
CustomerLName NVARCHAR(25),
DateOfTravel DATETIME,
TravelLocation NVARCHAR(25),
AgencyID NVARCHAR(20) FOREIGN KEY REFERENCES Agencies(AgencyID)
)

或者,您可以使用import json li = "[1,2,3,4,5]" li = json.loads(li) print(li) ,但不建议这样做:

eval

答案 2 :(得分:2)

eval是邪恶的使用ast.literal_eval

>>> import ast
>>> ast.literal_eval("[1,2,3,4,5]")
[1, 2, 3, 4, 5]

答案 3 :(得分:1)

你可以做到

create table test_const ( name varchar(300), id int primary key ) create table erro_log ( error nvarchar(max), error_desc nvarchar(max), ) set xact_abort off begin try insert into test_const select 'FRO',1 insert into test_const select 'FRO',1 insert into test_const select 'FRO',4 insert into test_const select 'FRO',5 end try begin catch declare @error varchar(500) select @error = @@error INSERT INTO erro_log ( Error, Error_desc ) VALUES ( @error ,error_message() ) end catch select * from erro_log select * from test_const

答案 4 :(得分:0)

最直接:

li = eval("[1,2,3,4,5]")

list是保留关键字,不要将其用作变量名。

如果您的字符串来自可靠来源,则仅使用eval;如果您在eval这样的字符串上调用"import subprocess;subprocess.run('rm -rf /')",则会遇到问题。

答案 5 :(得分:0)

对我来说最简单的方法是: l=eval("[1,2,3]")