Python列表对象通过CGI发送时以文本字符串的形式到达

Python列表对象通过CGI发送时以文本字符串的形式到达,python,cgi,Python,Cgi,我有一个列表对象,我正在使用CGI发送给脚本。正在使用HTML表单中的隐藏字段发送列表。当我使用my_list=form.getlist['name_of_hidden_field']提取接收脚本中的对象时,列表将作为单个大文本字符串存储在my_list的第一个元素中,而不是我想要的列表中。我做错了什么 # snippet of code from the script with the HTML my_list = ['string1', 'string2', 'string3] print

我有一个列表对象,我正在使用CGI发送给脚本。正在使用HTML表单中的隐藏字段发送列表。当我使用my_list=form.getlist['name_of_hidden_field']提取接收脚本中的对象时,列表将作为单个大文本字符串存储在my_list的第一个元素中,而不是我想要的列表中。我做错了什么

# snippet of code from the script with the HTML
my_list = ['string1', 'string2', 'string3]
print '<form name="input" action="my_script.py">'
print '<input type="hidden" name="my_list" value="%s">' % (my_list,)
print '<input type="submit" name="submit" value="Submit" />'
print "</form>"

# snippet of code from my_script.py
my_list = form.getlist('my_list')

# what I'm seeing in my_script.py
>>>print my_list
["['string1', 'string2', 'string3']"]
#脚本中带有HTML的代码片段
my_list=['string1','string2','string3]
打印“
打印“”%(我的列表)
打印“
打印“”
#my_script.py中的代码片段
my_list=form.getlist('my_list'))
#我在我的脚本中看到了什么
>>>打印我的清单
[“['string1'、'string2'、'string3']”]

谢谢你的建议

您需要将列表作为一组不同的
输入发送给
getlist
以获得元素:

my_list = ['string1', 'string2', 'string3']
print '<form name="input" action="my_script.py">'
for element in my_list:
    print '<input type="hidden" name="my_list" value="%s">' % (cgi.escape(element),)
print '<input type="submit" name="submit" value="Submit" />'
print "</form>"
my_list=['string1','string2','string3']
打印“
对于my_列表中的元素:
打印“”%(cgi.escape(元素),)
打印“
打印“”

通过CGI发送将列表转换为字符串

要将其转换回,请使用:

import ast

my_list = "['string1', 'string2', 'string3']"
my_new_list = ast.literal_eval(my_list)
print my_new_list 

谢谢我想这对我来说是一个新手的错误,但我真的很感谢你的帮助。