为了账号安全,请及时绑定邮箱和手机立即绑定

在 CENTOS 上使用 for 循环将 CSV 转换为 Json 问题

在 CENTOS 上使用 for 循环将 CSV 转换为 Json 问题

白猪掌柜的 2021-12-17 16:15:24
我想将 csv 文件转换为 json 文件,它可以在我的电脑上运行,但不能在我的 centos 服务器上运行我电脑上的python版本是python 3.7.2,csv在本地正确转换为json。所以我尝试在 Centos 上更新我的 python,我当前的版本是 python 2.6.6#Read CSV Filedef read_csv(file, json_file, format):    csv_rows = []    with open(file) as csvfile:        reader = csv.DictReader(csvfile)        title = reader.fieldnames        for row in reader:            csv_rows.extend([{title[i]:row[title[i]] for i in range(len(title))}])        write_json(csv_rows, json_file, format)我希望我的函数可以读取我的 csv 文件,但就地,python 返回我的这个错误:csv_rows.extend([{title[i]:row[title[i]] for i in range(len(title))}])                                               ^SyntaxError: invalid syntax显然这个错误在我的电脑上不存在,只在这个 CentOS 服务器上你认为我必须将我的 python 2 更新到 python 3 吗?
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

小优化和可读性提示:尽可能避免索引选择。

如果您同时迭代一个可迭代对象的索引和值,请避免使用 range(len(x)),而直接使用enumerate,在 Python 中速度更快且可读性更高。


让我们假设以下输入:


reader = [['1','2','3'],['11','22','33'],['111','222','333']]

title = ['T1','T2','T3']

改进@balderman 的回答:


csv_rows = []

for row in reader:

  csv_rows.extend([{val: row[idx] for idx, val in enumerate(title)}])

更好更清楚的是完全避免使用索引:


csv_rows = []

for row in reader:

  csv_rows.extend([ {t_val: r_val for (t_val, r_val) in zip(title, row)} ])

更紧凑(更快):


[{t_val: r_val for (t_val, r_val) in zip(title, row)} for row in reader]

List 和 dict-comprehensions 一开始有点棘手,但如果你把它们想象成“for 循环,for 放在后面”,它们就不那么奇怪了。


查看完整回答
反对 回复 2021-12-17
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

下面的代码在python 3.6和2.7下测试


(我相信这就是你要找的)


reader = [['1','2','3'],['11','22','33'],['111','222','333']]

csv_rows = []    

title = ['T1','T2','T3']

for row in reader:

    csv_rows.extend([ {title[i]:row[i] for i in range(len(title))} ])


print(csv_rows)

输出


[{'T2': '2', 'T3': '3', 'T1': '1'}, {'T2': '22', 'T3': '33', 'T1': '11'}, {'T2': '222', 'T3': '333', 'T1': '111'}]



查看完整回答
反对 回复 2021-12-17
  • 2 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信