我正在尝试将引号括起来的列表转换为列表。他们是这样做的最佳方式。
{% for img in image_set %}
<img src="{{img.media.url}} "/>
{% else %}
<p>No image</p>
{% endfor %}
答案 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]")