使用 json 文件映射 CSV

Mapping CSV using json file

我有一个包含 3 列的 csv 文件,

Dick,25,Coder
John,23,Architect
Roony,20,Designer
Paras,40,Manager

我如何使用 python 对 json 映射器进行解析,该映射器指出哪一列是第 2 列是年龄,第 3 列是职业? 像 -

[
  "Person","Age", "Job"
]

还有,如果年龄的值是整数就好了。 到目前为止,我有以下代码 -

import csv
import json

mapper = open('file.json')
csv_file = 'data.csv'
with open(self.csv_file, 'rb') as csvfile:
        rdr = csv.reader(csvfile, delimiter='\t', quotechar='|')
        j = json.loads(mapper.read())
        for i in range(0, len(rdr)):
            row = rdr[i]
            mapped_r = j[i]

我想要 -

mapped = CSVMapper.MapObjects('data.csv', 'mapper.json')
print mapped[0].Age == 25 # age of Dick (1st element)

有没有更好的方法来解决这个问题?

我认为 https://github.com/samarjeet27/CSV-Mapper/ 会满足您的需求。 使用

安装
pip install csvmapper

查看存储库中的示例。也许你可以在你的情况下这样使用它 -

mapper.json 文件 -

[
   [
      { "name" : "Person" },
      { "name" : "Age", "type" : "int" }
      { "name" : "Job" }
   ]
]

您可以将其实现为 -

import csvmapper

mapper = csvmapper.JSONMapper('mapper.json')
parser = csvmapper.CSVParser('data.csv', mapper)

for item in parser.buildObject():
    print item.Job # Job of the item
    print "will be %d after 2 years" %(item.Age+2) # item.Age is an int

希望对您有所帮助!