在 Python 中为每个列表元素添加引号(所有元素都包含斜线 '/')
Add quotes to every list elements (all elements contains slash '/') in Python
我将列表作为参数传递 (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] 不是列表,而是字符串。
来自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 + '"'
您没有将列表作为参数传递,而是始终将字符串作为参数传递。
如果您真的只是想要预期的输出(不是真正的 python 列表),请像这样调用您的脚本:
python test.py [\"1/1/2015\",\"1/2/2015\"]
我将列表作为参数传递 (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] 不是列表,而是字符串。
来自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 + '"'
您没有将列表作为参数传递,而是始终将字符串作为参数传递。 如果您真的只是想要预期的输出(不是真正的 python 列表),请像这样调用您的脚本:
python test.py [\"1/1/2015\",\"1/2/2015\"]