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

时间:2015-11-16 21:24:34

标签: 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 in sys.argv[1]))
print param  

输出类似于:

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

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

3 个答案:

答案 0 :(得分:0)

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

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

输出结果为:

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

答案 1 :(得分:0)

我认为你的做法一般都是正确的。

x = 'stuff'
=> print x
stuff
=> x = '"' + x +'"'
=> print x
"stuff"

问题似乎是你的sys.argv [1]不是一个列表,它是一个字符串。

来自this post

=> import ast
=> x = u'[ "A","B","C" , " D"]'
=> x = ast.literal_eval(x)
=> x
['A', 'B', 'C', ' D']
=> x = [n.strip() for n in x]
=> x
['A', 'B', 'C', 'D']

所以:

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 + '"'

答案 2 :(得分:0)

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

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