在Python中为每个列表元素添加引号(所有元素都包含斜杠';/&';)

在Python中为每个列表元素添加引号(所有元素都包含斜杠';/&';),python,list,python-2.7,double-quotes,Python,List,Python 2.7,Double Quotes,我将列表作为参数传递(sys.argv)如下: >>>python test.py ["1/1/2015","1/2/2015"] 其接收方式为: >>>print sys.argv[1] [1/1/2015,1/2/2015] 预期产出: >>>print sys.argv[1] ["1/1/2015","1/2/2015"] 我的尝试: param=(', '.join('"' + item + '"' for item

我将列表作为参数传递
(sys.argv)
如下:

 >>>python test.py ["1/1/2015","1/2/2015"] 
其接收方式为:

>>>print sys.argv[1]
[1/1/2015,1/2/2015]  
预期产出:

>>>print sys.argv[1]
["1/1/2015","1/2/2015"]  
我的尝试:

param=(', '.join('"' + item + '"' for item in sys.argv[1]))
print param  
输出类似于:

"[", "1", "/", "1", "/", "2015", ",", "1", "/", "2015", "2", "]"  

在Python中,在列表的每个元素中添加双引号的正确方法是什么?

您的输入实际上是一个字符串而不是列表,因此您的方法最终会迭代每个字符。如果要获取数组,可以使用以下代码:

param=[item for item in sys.argv[1][1:-1].split(",")]
print param  
输出为:

['1/1/2015', '1/2/2015']

我认为你做得大体上是对的

x = 'stuff'
=> print x
stuff
=> x = '"' + x +'"'
=> print x
"stuff"
问题似乎在于sys.argv[1]不是一个列表,而是一个字符串

发件人:

因此:


您不是将列表作为参数传递,而是始终传递字符串。 如果您真的只想要预期的输出(而不是真正的python列表),请按如下方式调用您的脚本:

python test.py [\"1/1/2015\",\"1/2/2015\"] 

是否必须以该格式传递日期,或者您可以将其作为
1/1/2015 1/2/2015
传递?或者甚至可以作为
1/1/2015,1/2/2015
传递,允许其他参数。然后,您可以按
拆分以获得每个日期。顺便说一句:列表元素没有引号。当您打印一些列表时,请打印添加引号,以区分文本“123”和数字123。
x = sys.argv[1]
# for this to work, sys.argv[1] has to be u'["1/1/2015","1/2/2015"]'
# the inside quotes are important
x = ast.literal_eval(x)
for each in x:
    each = '"' + each + '"'
python test.py [\"1/1/2015\",\"1/2/2015\"]