我有以下2D列表
data = [['2013-02-03', 'London', 'miles', '25'], ['2013-02-03', 'Newcastle', 'miles', '25'], ['2013-02-03', 'Birmingham', 'miles', '62']]
我需要能够删除列中的任何''
例如下面的最后一列,所以我可以将2D列表传递给文本文件中的javascript函数。
data = [['2013-02-03', 'London', 'miles', 25], ['2013-02-03', 'Newcastle', 'miles', 25], ['2013-02-03', 'Birmingham', 'miles', 62]]
我有一个函数,可以在单个值上得到结果
r = "['2013-02-03', 'London', 'miles', '25']"
def rreplace(s, old, new, occurrence):
li = s.rsplit(old, occurrence)
return new.join(li)
rreplace(p, "'", '', 2)
"['2013-02-03', 'Feltham', 'less_than_one_day', 25],"
有人能建议更好的方法来实现这个结果吗?
我尝试了很多方法:for循环,map / lambda和 iter,我可以遍历列表或更改单个列表中的元素 只是无法做到并输出结果。
答案 0 :(得分:3)
只需将值列表处理为Python:
for row in data:
row[-1] = int(row[-1])
这将替换data
嵌套列表中的每个最后一个元素及其等价整数。
接下来,使用json
模块将其转换为有效的JavaScript:
import json
r = json.dumps(data)
毕竟,JSON是JavaScript的一个子集。
快速演示:
>>> data = [['2013-02-03', 'London', 'miles', '25'], ['2013-02-03', 'Newcastle', 'miles', '25'], ['2013-02-03', 'Birmingham', 'miles', '62']]
>>> for row in data:
... row[-1] = int(row[-1])
...
>>> data
[['2013-02-03', 'London', 'miles', 25], ['2013-02-03', 'Newcastle', 'miles', 25], ['2013-02-03', 'Birmingham', 'miles', 62]]
>>> import json
>>> json.dumps(data)
'[["2013-02-03", "London", "miles", 25], ["2013-02-03", "Newcastle", "miles", 25], ["2013-02-03", "Birmingham", "miles", 62]]'